您的位置:首页 > 其它

文件操作的常用命令 -- grep, cut, sed

2013-11-24 20:01 561 查看
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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: