Linux bash 文本处理命令awk,sed,grep 用法
Linux bash 文本处理命令grep, sed, awk用法
grep, sed, awk 的主要用途及区别:
grep 用法
grep -rn "hello,world!" ./ ./ : 表示路径为当前目录. -r 是递归查找 -n 是显示行号 如果加上-i, 则为忽略大小写。
grep 显示匹配目标上下行
grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file 显示foo及前5行 grep -A 5 foo file 显示foo及后5行 查看grep版本号的方法是 grep -V
常用选项:
-E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
--color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
eg:
linux中查找包含某关键字的文件
find / -name '*.sh' |xargs grep 'hello'
start_line=`grep -in 'set task group' ../text.c |awk 'BEGIN {FS=":"} {print $1}'`; // 查找text.c 中'set task group' 所在行,并将行号赋值给变量start_line
sed 用法
sed -i "${start_line},${end_line} s/^/\/\//g" ./test.c; // 将text.c文件的开始行start_line 到结束行end_line 行首 插入// sed -i "$second_insert{s/hello()/SetDevice($next_run_cluster);hello()/}" ./hello_world.c; // 将hello_world.c文件的 第second_insert 行的hello() 替换成SetDevice($next_run_cluster);hello() sed -i 's/# print("ret row =====> {}".format(row))/print("ret row =====> {}".format(row))/g' conftest.py 将 # print("ret row =====> {}".format(row)) 这行去掉注释,也就是替换
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY