我必须修改文本文件的内容 如果该行包含模式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
答案 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