83

一意のパターンのすぐ下または上に 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
4

4 に答える 4

162

パターンの後に追加するには: (-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
于 2012-07-27T20:17:12.757 に答える
38

以下は、 の後に 1 行追加しますSearchPattern

sed -i '/SearchPattern/aNew Text' SomeFile.txt

New Textを含む各行の下に 1 行挿入しますSearchPattern

2 行追加するには、a を使用して\、入力中に改行を入力しますNew Text

POSIX sed では、 sed 関数\の後に a と改行が必要です。a[1] 改行なしで追加するテキストを指定することは GNU sed 拡張 (sed情報ページに記載されているとおり) であるため、その使用法は移植性がありません。

[1] https://unix.stackexchange.com/questions/52131/sed-on-osx-insert-at-a-certain-line/

于 2012-07-27T20:18:54.653 に答える
5

スタンザの指定された詩の後に新しい詩を挿入します。

sed -i '/^lorem ipsum dolor sit amet$/ s:$:\nconsectetur adipiscing elit:' FILE
于 2012-07-27T20:24:26.630 に答える
3

edを使用するためのより移植性があります。一部のシステムは sed で \n をサポートしていません

printf "/^lorem ipsum dolor sit amet/a\nconsectetur adipiscing elit\n.\nw\nq\n" |\
    /bin/ed $filename
于 2013-06-05T21:28:47.167 に答える