2011-02-10 11 views
27

sedを使用して、文字列fooを文字列バーでグローバルに置き換えたいとします。これは、文字列## Inputで始まらない行に対してのみ行う必要があります。特定のパターンで始まらない行の文字列をグローバルに置き換える方法

私はそれを動作させることができません。私はこのようなことを試みましたが、私が何をしているのか分かりませんでした:

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

助けてください!

答えて

46

あなただけ!を使用して一致を否定する必要があります。

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

\#のようにエスケープする必要があります。

+4

脱出する必要はありません'#' 'sed'には特別な意味はありません。 –

-4

醜い要求(すなわち、それらは彼らが求めたものを手に入れる)ための醜い答え:

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