はじめに
あまり使うことがない機能ですが、 sed で特定条件に合致した場合に、テキストファイルの内容を差し込むことができます。
検証環境
| |
準備
10から30までの数値を行ごとに出力します。 以下のコマンドを利用します。
| |
この出力内容のうち、 3 が含まれている行の後ろに任意のテキストファイルの内容を差し込んでみます。
| |
sed コマンドの r 内部コマンドを利用する
sed コマンドには r という内部コマンドがあります。
r の後ろに指定したファイルから内容を読み込んで差し込みます。
| |
3 が含まれている行の後ろに 「さん」がふくまれています! というテキストが表示されていることがわかります。
/3/r template.txt というコマンドのうち、 r の前に記述されている /.../ の部分は処理対象行を検索する条件となります。
3 を含む行を検索し、この行の後ろにファイルの内容を差し込みます。
sed コマンドの r 内部コマンドで行を置換したい
先の例だと 3 を含む行はそのまま残っていますが、これを出力させたくないというケースが多いと思います。
その場合は以下のようにコマンドを修正しましょう。
| |
-n オプションで出力を抑制し、 /3/!p で 3を含まない行のみを出力 させます。
あとは先程のコマンド( /3/r template.txt )を実行させます。
ひとこと
こちらの機能を有効活用しているケースを是非教えて下さい。