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

本文介绍了如何使用grep命令对文件内容进行搜索,并演示了sed命令的实用案例,包括替换、全局替换及删除指定行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值