因此,我尝试使用 sed 将正则表达式模式的两个实例更改为两个不同的字符串,例如:
sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -1`/" /path/to/file.ext
sed -E "s/\\t([A-Za-z]|[-])+$/\\t`get_addr.py -2`/" /path/to/file.ext
我尝试了很多事情,并进行了大量的手册页搜索,但我只是不太清楚如何实现它。
有没有办法告诉 sed 用不同的字符串替换每个匹配,例如
sed -E "s/\\t([A-Za-z]|[-])+$/[1st replacement],[2nd replacement]/" /path/to/file.ext
和/或有没有一种方法可以在正则表达式中指定我正在寻找第 n 个匹配项,以便我可以调用 sed 两次?
答案1
至少在 GNU sed 中,我认为你可以做类似的事情
sed -e '0,/pattern/ s//replacement1/' -e '0,/pattern/ s//replacement2/' file
例如给定一个文件
abc
def
abc
ghi
abc
jkl
然后
$ sed -e '0,/abc/ s//XYZ/' -e '0,/abc/ s//UVW/' file
XYZ
def
UVW
ghi
abc
jkl