grep 命令大家都很常用,不过,我们一般的操作是利用这个命令对 stdin 的内容进行操作,这篇文章介绍的内容是对文件进行操作。
grep "fing anything" . -R -n
上面这条命令的意思是:
find anything :是需要查找的内容,如果存在,显示这一行,不存在显示为空
. :代表的是当前目录,当然,你也可以定义自己的查找目录
-R:这个代表的是在目录里递归搜索
-n:这个意思是显示行号,即显示对应的那行的行号
好吧,我们来做个实验,文件的内容就不在这里列出来,相信,如果你懂这个命令,看到显示的内容就应该知道是什么意思:
cut 命令能够对输入进行列的操作,默认的分割符是制表符,我们可以利用 -d 选项定义自己的分割符。-f 选项代表的是取得第几列,当需要选择多个列时,用逗号分开即可,我们利用上面的输出取得文件名和第几行:
下面介绍一个非常重要的命令 sed
这个命令的意思是:流编辑器,我们通常用这个命令对文件的内容进行替换,它需要有一个输入文件,如果我们希望文件的内容被保存,那么我们需要加上 -i 选项,我们来看看这个命令的使用方法。
首先,我列出需要操作的文件 fork_.c:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main(int argc, char **argv)
{
if (fork() == 0)
{
sleep(5);
/*this is orphan*/
printf("This is child!\n");
exit(0);
}
else
{
printf("This is parent!\n");
exit(0);
}
return 0;
}操作1:sed 's/sleep(5)/sleep(8)/' fork_.c
它代表的意思是用 sleep(8) 替换 sleep(5) ,命令执行效果如下图所示:
操作2:sed 's/This/oooo/g' fork_.c
这个命令和上面的那条命令很像,只是多了一个字母 g ,这个字母的意思是全局替换,上面的不带 g 的命令意思是替换第一处,好吧,验证一下吧:
这里的 -i 选项我就不做实验了,有兴趣的朋友可以自己试下。
我们还可以利用sed来删除一些我们不需要的行,利用 d 参数:sed '/This/d' fork_.c
本文介绍了如何使用grep命令对文件内容进行搜索,并演示了sed命令的实用案例,包括替换、全局替换及删除指定行。

被折叠的 条评论
为什么被折叠?



