複数行からなるテキストデータに対し、指定した行に指定した文字列を挿入する方法および
指定したキーワードの前後に行挿入する方法を以下に記します。
以下の構文で指定した行に行挿入することができます。
テスト用テキストデータとして以下の内容を使用しました。
$ cat data.txt one two three four five six seven eight nine ten
指定した行に文字列を挿入してみます。
以下の例では5行目に挿入しています。
$ cat data.txt | sed -e '5i sakura at just4fun.biz' one two three four sakura at just4fun.biz five six seven eight nine ten $ cat data.txt | sed -e '5i sakura at just4fun.biz' | cat -n 1 one 2 two 3 three 4 four 5 sakura at just4fun.biz 6 five 7 six 8 seven 9 eight 10 nine 11 ten
5行目に挿入されているのが確認できます。
ちなみに以下の記述でも同様の処理になります。
sed -e '5i sakura at just4fun.biz' data.txt
指定した行に挿入する場合の構文は以下のようになります。
sed -e '数字i 文字列' ファイル名
指定した行の次に挿入する場合の記述は以下のようになります。
sed -e '数字a 文字列' ファイル名
上記の挿入同様に、5行目を指定して実行してみます。
$ cat data.txt | sed -e '5a sakura at just4fun.biz' | cat -n 1 one 2 two 3 three 4 four 5 five 6 sakura at just4fun.biz 7 six 8 seven 9 eight 10 nine 11 ten
上記では行番号指定でしたが、指定した文字列が出現した場合、その前後に挿入する例を以下に記します。
前に挿入する場合の構文
sed -e '/キーワード'/i 挿入文字列' ファイル名
後ろに挿入する場合の構文
sed -e '/キーワード'/a 挿入文字列' ファイル名
以下、実行例を記します。
$ cat data.txt | sed -e '/two/i INSERT' one INSERT two three four five six seven eight nine ten
twoの前に挿入されているのが確認できます。
以下の例では、tがキーワードなので、tが出現する行の前に挿入されているのが確認できます。
$ cat data.txt | sed -e '/t/i INSERT' one INSERT two INSERT three four five six seven INSERT eight nine INSERT ten
以下の例は、キーワードが出現した行の後ろに挿入する例です。
$ cat data.txt | sed -e '/^nine$/a INSERT' one two three four five six seven eight nine INSERT ten
以上、sedをつかって指定した行および指定したキーワード行に行を挿入する方法でした。