一意のパターンのすぐ下または上に1行または複数行を挿入して、多数のファイルを編集する必要があります。シェルでsed
、awk
、Perl
(またはその他)を使用してその方法をアドバイスしてください。ありがとう!例:
some text
lorem ipsum dolor sit amet
more text
consectetur adipiscing elit
の後にlorem ipsum dolor sit amet
を挿入したいので、出力ファイルは次のようになります。
some text
lorem ipsum dolor sit amet
consectetur adipiscing elit
more text
パターンの後に追加するには:(-iはインプレース置換の場合)。 line1とline2は、追加(または追加)する行です。
sed -i '/pattern/a \
line1 \
line2' inputfile
出力:
#cat inputfile
pattern
line1 line2
前に行を追加するには:
sed -i '/pattern/i \
line1 \
line2' inputfile
出力:
#cat inputfile
line1 line2
pattern
以下は、SearchPattern
の後に1行追加します。
sed -i '/SearchPattern/aNew Text' SomeFile.txt
SearchPattern
を含む各行の下にNew Text
を1行挿入します。
2行を追加するには、\
を使用し、New Text
と入力しながら改行を入力します。
POSIX sedには\
とa
sed関数の後に改行が必要です。 [1]改行なしで追加するテキストの指定はGNU sed拡張機能(sed
情報ページに記載されている)であるため、その使用法は移植性が低くなります。
[1] https://unix.stackexchange.com/questions/52131/sed-on-osx-insert-at-a-certain-line/
スタンザの指定された詩の後に新しい詩を挿入します。
sed -i '/^lorem ipsum dolor sit amet$/ s:$:\nconsectetur adipiscing elit:' FILE
Edの使用により移植性があります。一部のシステムはsedで\ nをサポートしていません
printf "/^lorem ipsum dolor sit amet/a\nconsectetur adipiscing elit\n.\nw\nq\n" |\
/bin/ed $filename