如何全局替换不以特定模式开头的行中的字符串

时间:2011-02-10 05:34:31

标签: sed

我想使用sed全局用字符串bar替换字符串foo。只应对不以字符串## Input。

开头的行进行此操作

我无法让它发挥作用。我尝试过这样的事情,但达到了我不确定我是否知道自己在做什么的一点:

sed -i '/^##Input/ s/foo/bar/g' myfile

请帮忙!

3 个答案:

答案 0 :(得分:66)

您只需要使用!否定匹配:

sed -i '/^##Input/! s/foo/bar/g' myfile

答案 1 :(得分:-4)

你必须像\#一样逃避#。

答案 2 :(得分:-5)

一个丑陋的请求的丑陋答案(即他们得到他们要求的):

echo \{
for file in *.json; do
    sed -n '/^[\{\}]/! s/\([^\,]\)$/\1,/; /^[\{\}]/!p' $file
done
echo \{