linux下对文本流处理的软件有sed和awk,sed基本以行为单位来处理输入数据,awk会先把数据分割(如空格或Tab),以更接近编程语言的语法进行处理,包含一些基本的字串操作,数学函数功能登录。

  • 字符串替换 语法:sed -e 's/[oldString]/[newString]/[modifier]' file,标识位可以指定为”g,p,w”。
    $ sed -e 's/bash/zsh/g' /etc/passwd # _bash=>zsh_
    
  • 字符替换 语法:sed -e 'y/[oldCharacter]/[newCharacter]/' file
    $ sed -e 'y/abc/ABC/' /etc/passwd # a=>A b=>B c=>C 当只替换一个字符时和s命令等效,前后长度要相等
    
  • 删除指定行数 语法:sed -e '1,2d' file
    $ sed -e '1,3d' file #删除1-3行
    
  • 文件输出 语法:sed -i -e 's/[oldString]/[newString]/[modifier]' file。’-i’表示将处理结果覆盖到源文件
    $ sed -i -e 's/abc/eee/g' file #处理数据,并将结果写入原文件
    
  • 使用环境变量, 双引号
    $ sed -e "s/$HOSTNAME/newHostname/g" file
    

参考资料

  1. https://www.gnu.org/software/sed/manual/sed.html