grep
用于过滤,grep的命令过滤是最快的
#grep默认是区分大小写的,-i参数则不区分大小写匹配
grep -i
#反向匹配(取反,过滤掉匹配的)
grep -v
#扩展正则表达式,匹配多个条件“ERROR|Started|failed”,egrep = grep -E
grep -E
#精确匹配,主要用于过滤端口
grep -w
#统计匹配次数(类似于wc -l)
grep -c
#匹配后显示行号
grep -n
sed
替换,修改文件,日志取行。文件的修改以及日志的范围取行,如晚上0点到凌晨1点的日志
1.查找打印p总结:
#打印test.txt文件的第三行
sed -n '3p' test.txt
#打印test.txt文件从5行到最后一行
sed -n '5,$p' test.txt
#精确匹配出scala,类似于grep
sed -n '/scala/p' test.txt
#扩展正则需要加 -r
sed -nr ’/[ab]{1,4}/p’ test.txt
#匹配scala到spark范围内全部输出,通常用于日志时间
sed -nr '/scala/,/spark/p'
2.sed d删除:
#删除test.txt文件的第一行
sed '1d' test.txt
#删除test.txt文件的第三行到最后一行
sed '3,$d' test.txt
#精确匹配出scala并删除
sed '/scala/d' test.txt
#匹配scala到spark的内容并删除
sed '/scala/,/spark/d' test.txt
3.sed cai --replace(替代)、append(行后追加)、insert(行前插入)
#将第三行替代成this is replace
sed '3c this is replace'
#在第三行后追加this is append
sed '3a this is append'
#在第三行前插入this is insert
sed '3i this is insert'
4.sed s -s为替换 -g全局替换(global),不加的话只替换每行第一个匹配项
awk
awk是一种用于处理文本的编程语言工具,很多方面都类似于shell(c语言),主要应用场景:统计日志,计算。
#取test.txt文件的第一行
awk 'NR==1' test.txt
#取test.txt文件的3-6行
awk 'NR>=3 && NR<=6' test.txt
#精确匹配test.txt文件中的spark行
awk '/spark/' test.txt
#匹配范围取行,从spark到java
awk '/spark/,/java/' test.txt
#取test.txt文件的第一列
awk '{print $1}' test.txt
#取test.txt文件的第一列和最后一列
awk '{print $1,$NF}' test.txt