替换shell脚本中特定行中的字符串



我有一个文件,里面有很多信息。文件可能会随着时间的推移而更新。我的问题是,我有一个文本在一个特定的行(行号不是固定的(。唯一的标识符是行的开头:例如:

A=I love you Mary.B=I love you Suzi.C=I love you JimmyD=I love you Mary and Jimmy.

现在,我只想在唯一标识符为"的地方用Maria来更改Mary;A";。我不能用行号来做,因为A可以在任何一行中。我不想更改最后一行,这行也有"玛丽"一词。

执行此操作的标准方法是要求sed仅对与模式匹配的行进行更改。例如,更改第一个";玛丽";至";Maria";在以";A=":

sed '/^A=/s/Mary/Maria/' < input > output

为了改变"em"的所有;玛丽";文本到";Maria";在以";A=":

sed '/^A=/s/Mary/Maria/g' < input > output

一些sed实现支持CCD_;"就位";编辑;它真正做的是对一个临时文件进行更改,然后将该临时文件复制到原始文件上。有了这些sed实现,您可以使用进行适当的更改

sed -i '/^A=/s/Mary/Maria/' input

最新更新