unix grep命令的大致实现
用到了strstr(a,b)函数和getline()函数,strstr(a,b)函数看是否能在字符串a中找到字符串b,若找到返回指向,若没找到返回NULL
strstr实现可以看:Implement strStr()
grep -xn 模式 ==>就是找出没有该模式的行并打印。
代码:
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000 /*打印所有与第一个参数指定的模式相匹配的行*/
int main(int argc, char const *argv[])
{
char line[MAXLINE];
int c,found=,except=,number=;
int lineno=;
if(argc==) return -; while(--argc>&& (*++argv)[]=='-'){
while(c=*++argv[]){
switch(c){
case 'x':
except=;
break;
case 'n':
number=;
break;
default:
printf("Find:illegal option %c\n",c);
argc=;
found=-;
break;
}
}
} while(found!=-&&fgets(line,MAXLINE,stdin)>){
lineno++;
if(except==&&strstr(line,*argv)==NULL){
if(number)
printf("%d:",lineno);
printf("%s",line);
found++;
}
}
return found;
}
unix grep命令的大致实现的更多相关文章
- 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...
- Unix/Linux中的grep命令(转)
本文转载自:如何使用Unix/Linux grep命令——磨刀不误砍柴工系列.该博文条理很清晰. grep简介 grep在一个或多个文件中查找与模式字符串(pattern)匹配的行,并将搜索的结果打印 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- Linux命令(23)grep命令的使用
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
- grep命令的使用
grep是UNIX和LINUX中使用最广泛的命令之一.grep允许对文本文件进行模式查找.如果找到匹配模式, grep打印包含模式的所有行.grep支持基本正则表达式,也支持其扩展集.grep有三种变 ...
- Linux之grep命令详解
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- linux grep命令详解
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- Ubuntu 14.10 下grep命令详解
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- 快速掌握grep命令及正则表达式
Linux系统自带了支持拓展正则表达式的 GNU 版本 grep 工具,所有的Linux发行版中均默认安装grep ,grep 命令被用来检索一台服务器或工作站上任何位置的文本信息,如何在 Linux ...
随机推荐
- Ckeditor for Drupal
Ckeditor for Drupal 关于Drupal的所见即所得编辑器,Ckeditor是一个不错的选择,而且可以在Ckeditor官网直接下载到专为Drupal制作的版本: http:/ ...
- pre-receive hook declined
没有master分支的代码提交权限. 分配权限或者提交分支合并申请
- ios 登录功能学习研究
登录功能是我在湖畔做的第一个需求. 当时PD给我的草图和下图类似: (图片来自知乎iOS客户端登录界面) 不过需求中要求用户名或者密码错误时,输入框要抖动(类似Mac登录密码错误的抖动效果). 如果实 ...
- 气泡小角的css实现
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> ...
- (转)automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)
转自http://m.blog.csdn.net/blog/humingtao2013/27662093 automaticallyAdjustsScrollViewInsets(个人认为iOS7中略 ...
- c++ 整数读入优化
这个函数!!!! 它真的巨好用!!! 改了两天 换了两个版本的代码 都TLE了 然后尝试着在文件头加了这个替换了cin和scanf 结果意外地发现两个文件都突然能过了??? 太神奇了叭! 强烈安利! ...
- BNU OJ 1027 金币系统
金币系统 Time Limit: 1000ms Memory Limit: 65535KB 64-bit integer IO format: %lld Java class name: ...
- POJ 1543 Perfect Cubes
Perfect Cubes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12595 Accepted: 6707 De ...
- BZOJ [HNOI2015]亚瑟王 ——期望DP
发现每张卡牌最后起到作用只和是否打出去了有关. 而且每张牌打出去的概率和之前的牌打出去的情况有关. 所以我们按照牌的顺序进行DP. 然后记录$i$张牌中打出$j$张的概率,然后顺便统计答案. 直接对系 ...
- sqlite-jdbc
sqlite-jdbc驱动下载 https://bitbucket.org/xerial/sqlite-jdbc/downloads import java.sql.*; public class T ...