0

私は次のようなパターンを持っています

Fixed pattern
text which can change(world)

これと交換したい

Fixed pattern
text which can change(hello world)

私が使おうとしているもの

cat myfile | sed -e "s#\(Fixed Pattern$A_Z_a_z*\(\)#\1 hello#g > newfile

更新: 上記の単語 world も変数であり、変更されます。基本的には、式の後に最初に出現した括弧の後に hello を追加します。

前もって感謝します。

4

2 に答える 2

3

あなたの目標が'hello 'の後の行のすべての開き括弧の内側に追加することであると仮定すると'Fixed pattern'、ここにうまくいくはずの解決策があります:

sed -e '/^Fixed pattern$/!b' -e 'n' -e 's/(/(hello /' myfile

各部分の説明は次のとおりです。

/^Fixed pattern$/!b    # skip all of the following commands if 'Fixed pattern'
                       #   doesn't match
n                      # if 'Fixed pattern' did match, read the next line
s/(/(hello /           # replace '(' with '(hello '
于 2012-06-07T18:15:30.533 に答える
2

sed でこれを行うには、次を使用しますn

sed '/Fixed pattern/{n; s/world/hello world/}' myfile

もっと注意する必要があるかもしれませんが、これはほとんどの状況でうまくいくはずです。sed が(行アンカーとFixed patternを使用したい場合があります) を検出すると、次の行を読み取り、それに置換を適用します。^$

于 2012-06-07T18:12:06.953 に答える