用sed替换一行中的多个字符串
replace multiple strings in one line with sed
我有一个包名列表,想删除其中一些 sed
echo "package1 package2 package24 package44 package66 package12345" > benoetigte_pakete.list
如何删除其他列表中的某些内容?
dellist="package24|package66"
我试过了
cat benoetigte_pakete.list | sed "s/(package24|package66)//"
但这不起作用。
在 sed
正则表达式中,您必须转义 (
、|
和 )
。
您还需要使用 g
修饰符,以便它替换行中的所有匹配项,而不仅仅是第一个匹配项。
dellist="package24|package66"
# escape the pipes
dellist=${dellist//|/\|}
sed "s/\b\($dellist\)\b//g" benoietigte_packete.list
我添加了 \b
所以它只匹配整个单词。
根据您拥有的 sed
版本,您还可以使用 -E
或 -r
选项来使用扩展正则表达式。
我有一个包名列表,想删除其中一些 sed
echo "package1 package2 package24 package44 package66 package12345" > benoetigte_pakete.list
如何删除其他列表中的某些内容?
dellist="package24|package66"
我试过了
cat benoetigte_pakete.list | sed "s/(package24|package66)//"
但这不起作用。
在 sed
正则表达式中,您必须转义 (
、|
和 )
。
您还需要使用 g
修饰符,以便它替换行中的所有匹配项,而不仅仅是第一个匹配项。
dellist="package24|package66"
# escape the pipes
dellist=${dellist//|/\|}
sed "s/\b\($dellist\)\b//g" benoietigte_packete.list
我添加了 \b
所以它只匹配整个单词。
根据您拥有的 sed
版本,您还可以使用 -E
或 -r
选项来使用扩展正则表达式。