sed
- sed(stream editor)流式编辑器是一种在线的、非交互式的编辑,主要用于字符串替换。
- 实现流程:
- 存储当前行到缓冲区
- 处理缓冲区内容
- 输出内容
- 处理下一行
- 注意:使用重定向或者-i选项会修改文件。
场景举例:字符串替换
cat sed_test1 | sed "s/gkl/zxy/"
cat sed_test1 | sed "s/gkl/zxy/g"
echo "gklgkl 123 gkl" | sed -r "s/(gkl){2}//"
- 特殊场景下的处理
场景举例:字符串替换(修改文件)
cat sed_test3 | sed "/gkl/d"
sed -ibak "s/gkl/zxy/" sed_test1
场景举例:删除匹配行
cat sed_test3 | sed "/gkl/d"
场景举例:字符串筛选行
cat sed_test3 | sed -n "/gkl/p"
cat sed_test3 | sed -n "2p"
cat sed_test3 | sed -n "1,/zxy/p"
awk
- 将字符按照指定分隔符进行分列,并对列进行加工和打印。
ll | awk 'BEGIN{FS=" "}{print $1,$NF}'
ll | awk 'BEGIN{FS=" ";OFS=" | "}{print $1,$NF}'