0%

Linux三剑客:grep、awk、sed

grep

global search regular expression(RE) and print out the line

基于正则表达式查找满足条件的行

grep 语法

1
2
3
4
5
6
7
grep pattern file
grep -i pattern file #忽略大小写
grep -v pattern file #不显示匹配的行
grep -o pattern file #把每个匹配的内容用独立的行显示
grep -E pattern file #使用扩展正则表达式
grep -A -B -C pattern file #打印命中数据的上下文
grep pattern -r dir / #递归搜索

awk

名字来源于三个作者的名字简称

根据定位到的数据行处理其中的分段

awk 语法

1
2
3
4
5
6
7
awk 'pattern{action}'
awk 'BEGIN{}END{}' #开始和结束
awk '/Running/' #正则匹配
awk '/aa/,/bb/' #区间选择
awk '$2~/xxx/' #字段匹配
awk 'NR==2' #取第二行
awk 'NR>1' #去掉第一行

sed

steam editor

根据定位到的数据行修改数据

sed 语法

1
2
3
4
5
6
7
sed [addr]X[options]
-e 表达式
sed -n '2p' #打印第二行
sed 's#hello#world#' #修改
-i #直接修改源文件
-E #扩展表达式
--debug #调试