sed コマンドは、複数の文字列発生に異なるテキストを追加します。

sed コマンドは、複数の文字列発生に異なるテキストを追加します。

sedコマンドを使用して複数の文字列にテキストを追加したいと思います。

たとえば、

Hello world
types="program"
Mario
types="Game"
Hello world
types="program"
Mario
types="Game"

したがって、Marioが最初に登場したときに「firstMario」を追加し、次にMarioが登場したときに「secondMario」などを追加したいと思います。出力:

Hello world
types="program"
firstMario
types="Game"
Hello world
types="program"
secondMario
types="Game"

ベストアンサー1

sed '
  /Mario/{
    s//first&/
    :1
      n
      s//second&/
    b1
  }'

または:

sed '
  1 {
    x;s/^/first/;x
  }
  /Mario/ {
    G
    s/\(Mario.*\)\n\(.*\)/\2\1/
    x;s/second/third/;s/first/second/;x
  }'

1行に複数のMarioを許可し、より多くの置換を一般化するには、次のようにしますperl

perl -pe 'BEGIN{@words=qw(first second third)}
          s/(?=Mario)/$words[$n++]/ge'

おすすめ記事