Linux“三剑客”:grep,awk,sed
grep

- grep -i 不区分大小写
- grep -n 显示行号
- grep -c 计算多少行包含指定的字符串
- grep -Bn -Am 显示匹配行的前n行,后m行
- grep -v反向查找,查找不包含某个字符串的行
- grep -e pat1 -e pat1 …匹配满足多个条件之一的行,pat1,pat2之间是或的关系
- grep -E 使用扩展的正则表达式进行查找
awk


awk ‘[pattern]{action}’ filename #必须使用单引号



- awk ‘pattern’ filename 帅选符合某种条件的行

| 变量 |
描述 |
| NR |
行号,从1开始 |
| FILENAME |
当前文件名 |



sed
| 例子 |
说明 |
| sed ‘2a testContent’ test.txt |
在第 2 行后面新增一行内容 |
| sed ‘1,3a testContent’ test.txt |
在原文的第 1~3 行后面各新增一行内容 |
| 例子 |
说明 |
| sed ‘2c testContent’ test.txt |
将第 2 行内容整行替换 |
| sed ‘1,3c testContent’ test.txt |
将第 1~3 行内容替换成一行指定内容 |
| 例子 |
说明 |
| sed ‘2d’ test.txt |
删除第 2 行 |
| sed ‘1,3d’ test.txt |
删除第1~3行 |
| 例子 |
说明 |
| sed ‘s/old/new/’ test.txt |
匹配每一行的第一个old替换为new |
| sed ‘s/old/new/gi’ test.txt |
匹配所有old替换为new,g 代表一行多个,i 代表匹配忽略大小写 |
| sed ‘3,9s/old/new/gi’ test.txt |
匹配第 3~9 行所有old替换为new |
若不指定行号,则每一行都操作
对比
grep常用于查询
awk用于高级的格式化输出
sed用于对文件的修改
相关文章:
-
2021-08-22
-
2021-10-11
-
2021-05-10
-
2022-01-02
-
2021-05-23
-
2021-08-19
-
2021-09-30
-
2021-09-11