Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客”
grep更适合单纯的查找或匹配文本;
sed更适合编辑匹配到的文本;
awk更适合格式化文本,对文本进行较复杂各式处理;
-
Grep
--color=auto 或者 --color:表示对匹配到的文本着色显示
-i:在搜索的时候忽略大小写
-n:显示结果所在行号
-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数
-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
-v:输出不带关键字的行(反向查询,反向匹配)
-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after
-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before
-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context
-e:实现多个选项的匹配,逻辑or关系
-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用"echo $?"查看是否匹配到,0表示匹配到,1表示没有匹配到。
-P:表示使用兼容perl的正则引擎。
-E:使用扩展正则表达式,而不是基本正则表达式,在使用"-E"选项时,相当于使用egrep。
-m 1 匹配到首行记录后停止
http://www.zsythink.net/archives/1733/
-
Sed
sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。
Sed小技巧:
1,
search_result=`grep -E --color -n '####VVVV' $podfile`
echo "$search_result"
### "$search_result" 加双引号保存grep结果中的换行符效果
2,
array=(`echo "$search_result" | awk -F "[:]" '{print$1}' | sort -r`)
### 加括号,将换行结果作为数组输出
http://cn.voidcc.com/question/p-oqtqbgdm-bgy.html
https://blog.csdn.net/longshenlmj/article/details/14166193
https://blog.csdn.net/lingeio/article/details/96480071
坑1:
eg :sed -i "" 's/$oldday/$today/g' ${json_path}
shell中如果有$这样的特殊字符,单引号要换成双引号。
坑2:
mac环境使用sed修改文件报错:invalid command code E
eg: sed -i "s/$oldday/$today/g" ${json_path}
原来sed -i需要带一个字符串作为备份源文件的文件名称,如果这个字符串长度为0,则不备份。
https://blog.csdn.net/fdipzone/article/details/51253955
坑3:
MAC执行sed命令报“command c expects \ followed by text”错误解决办法
https://blog.csdn.net/lord_y/article/details/99949999
-
awk
awk [options] '{pattern + action}' {filenames}
Vivien 补充
麻烦1:他们都是面向“行”的。跨行需要采用其他手段。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!