このエントリーをはてなブックマークに追加


指定した行に行挿入したい(出現したキーワードの前後行に行挿入したい)

複数行からなるテキストデータに対し、指定した行に指定した文字列を挿入する方法および
指定したキーワードの前後に行挿入する方法を以下に記します。


関連記事

sedによる行挿入

以下の構文で指定した行に行挿入することができます。

テスト用テキストデータとして以下の内容を使用しました。

$ 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をつかって指定した行および指定したキーワード行に行を挿入する方法でした。



添付ファイル: filedata.txt 604件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-07 (水) 20:38:34