搜索模式ABC并替换模式XYZ

时间:2016-03-19 13:56:49

标签: shell pattern-matching

我必须修改文本文件的内容 如果该行包含模式ABC,我会逐行读取该文件 如果它包含模式ABC,我必须将该行中的另一个模式XYZ替换为PQR

这是我制作的代码

while read line           
do           
    #command to search for pattern ABC. If yes, replace another pattern XYZ in this line with PQR         
done < myfilename.txt 

2 个答案:

答案 0 :(得分:0)

使用sed,您不需要一段时间读取循环:

sed -i '/ABC/s/XYZ/PQR/g' myfilename.txt
  • /ABC/是地址,只会处理与此地址匹配的行。
  • s是将XYZ替换为̀PQR的替换命令。
  • g是一个修饰符,用于替换所有出现的XYZ(g用于一般替换)
  • -i选项用于应用更改(文件被覆盖)。

答案 1 :(得分:0)

当不支持sed -i时,您可以使用ed:

ed -s input <<< $',s/ABC/DEF/g\nw'

ed -s input << EOF
,s/ABC/DEF/g
w
q
EOF