3

これは簡単な質問です。sed/awkでこれを実行できるかどうかわかりません。sedでこれらの3行を検索し、決定された文字列の行に置き換えるにはどうすればよいですか。

<Blarg>
<Bllarg>
<Blllarg>

と置換する

<test>

sedで試してみまし"s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/g"たが、これらの行が見つからないようです。おそらく私のブレークライン文字(?)の何か\n。私は何かが足りないのですか?

4

3 に答える 3

5

通常、sed は一度に 1 行しか処理しないため、パターンが一致することはありません。これを試して:

sed '1N;$!N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/;P;D' filename
于 2012-08-29T13:57:09.153 に答える
3

これはあなたのために働くかもしれません:

sed '/<Blarg>/ {N;N;s/<Blarg>\n<Bllarg>\n<Blllarg>/<test>/}' <filename>

次のように機能します。

  • <Blarg>が見つかるまでファイルを検索します
  • 次に、次の 2 行を現在のパターン スペースに追加します。N;N;
  • 現在のパターン スペースが一致するかどうかを確認する<Blarg>\n<Bllarg>\n<Blllarg>
  • もしそうなら、それを代用してください<test>
于 2012-08-29T13:49:51.850 に答える
0

cコマンドで正規表現を使用して範囲アドレスを使用することができます。

sed '/<Blarg>/,/<Blllarg>/c<test>' filename
于 2021-07-01T17:26:33.650 に答える