如果我不想要替换的行的某一部分包含一个子字符串列表,我怎样才能在sed中运行替换?
例如,在以下示例输入中,用于标记我要替换的行的子字符串为123
,456
和abc
:
# jdggsdihdf, 123
# ljhkhkjh, 789
# fagdfhgghjasfa, 456
# jsajspjsdighishxc, abc
# jgasdjGA, def
因此,只应修改这些行,而789
或def
的行应保持不变:
Replaced text, 123
# ljhkhkjh, 789
Replaced text, 456
Replaced text, abc
# jgasdjGA, def
我知道如何进行简单的s/foo/bar/
替换,所以我可以做s/^# .*,/Replaced text,/
,但我不知道该怎么做只有当该行也匹配其中一个字段中的字符串时不想要替换更改。
答案 0 :(得分:1)
第一个问题:
sed 's/^#.*,/replaced_text/' Input_file
第二个问题:
sed 's/\, [^ ]*/,/' Input_file
要修改Input_file本身使用sed -i
选项,也要使用sed -i.bak
选项备份Input_file。