在写 shell 脚本的时候经常会用到这两种文本处理工具:sed
awk
;主要记录一下两者的常用方式:
sed
sed: stream editor
用例: sed 's/xxxx/xxxx/g' inputfile
- 逐行处理,可进行文本的查找、替换与删除
- 可使用正则表达式
- 参数: d 删除:
sed '/The/d' inputfile
删除包含 The 的行 - 参数: s 替换:
sed 's/A/B/g' inputfile
常与参数 g 结合进行全局替换
详细参考:Sed 命令详解 & 正则表达式
awk
- GNU AWK 是一种文本处理工具
- AWK 更是一种编程语言
- 执行流程:
BEGIN block
---read lines and repeat command
---END block
- awk 用的最多的是根据匹配的行,打印选定的列或域:
awk '/a/ {print $1}'
- 可以通过在
BEGIN block
中通过 FS,RS,OFS,ORS来分别指定输入域、行分隔符和输出域,行分隔符
awk 'BEGIN{FS="\n";RS="";ORS=""}{for(x=1;x<=NF;x++){print $x"\t"} print "\n"}' ./t.txt
详细参考:W3School
Regex Tutorial For Linux (Sed & AWK) Examples
总结
shell中的文本处理工具除了上述外,grep -e
也是一种很强大的工具。
网友评论