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

Sed 如何全局替换不以特定模式开头的行中的字符串,sed,Sed,我想使用sed用字符串栏全局替换字符串foo。这仅适用于不以字符串##输入开头的行 我不能让它工作。我尝试过这样的事情,但我不确定自己是否知道自己在做什么: sed -i '/^##Input/ s/foo/bar/g' myfile 请帮忙 你必须逃脱,就像在\\\code>你只需要用否定匹配: sed -i '/^##Input/! s/foo/bar/g' myfile 丑陋请求的丑陋回答(即他们得到了他们所要求的): 没有必要逃避#。它对sedsed没有特殊意义。这非常有用!我没有意

我想使用sed用字符串栏全局替换字符串foo。这仅适用于不以字符串##输入开头的行

我不能让它工作。我尝试过这样的事情,但我不确定自己是否知道自己在做什么:

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

请帮忙

你必须逃脱,就像在
\\\code>

你只需要用
否定匹配

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

丑陋请求的丑陋回答(即他们得到了他们所要求的):


没有必要逃避
#
。它对sed
sed
没有特殊意义。这非常有用!我没有意识到,在您运行搜索并替换该行之前,您可以为sed提供与该行匹配的输入。这对我帮助很大@bballdave025:有关更多信息,请参阅GNU
sed
手册的一节。
echo \{
for file in *.json; do
    sed -n '/^[\{\}]/! s/\([^\,]\)$/\1,/; /^[\{\}]/!p' $file
done
echo \{