一、sed(Stream EDitor):
- 格式:sed [options] ‘command’ file(s)
- 若 command 会修改内容,则需要加 -e
- 整行处理:
1)a:行后增加行
2)c:取代指定行
3)d:删除指定行
4)i:插入指定行
5)p:打印指定行 - 行内处理:
1)s:用正则处理指定行
2)格式:sed ‘s/要被取代的字串/新的字串/g’,s前面可接指定行号 - 同一个 -e 用分号分隔多个匹配可以级联处理,也可对 sed 级联处理,但是**-e** 不支持级联处理,即:每个 command 只会对原始行处理
- 可以先获取到匹配的内容,然后用 & 插入新的分割符,级联处理
二、awk(gawk):
- 格式:awk 'BEGIN{action} pattern1{action} pattern2{action} … patterN{action} END{action}'
- pattern 和 action 都采用C式语法,支持正则表达式匹配
- 内置参数:NR-已读的记录数(行号),NF-浏览记录的域的个数(列数),$0-当前记录
- 向awk传参:
1)"’"$var"’"
2)’"$var"’,这种写法与上一种类似。如果变量含空格,则变为’""$var""'较为可靠。
3)export变量,使用ENVIRON[“var”]形式,获取环境变量的值
4)可以使用awk的-v选项 (如果变量个数不多) - awk调试:awk可用"dgawk -f 程序"进行调试,进入dgawk后,输入help可查看指令详情,类似gdb的用法