sedコマンドは1個以上の入力ファイルを指定できます。
sedコマンドに入力ファイルがないもしくは-(ハイフン)の場合は、標準入力に対して、sedコマンドのスクリプトを実行します。
例えば、以下のinputfile1を想定します。
inputfile1
1 2 3 4 5 |
aaa bbb ccc ddd eee |
このファイルに対して、以下のコマンドを実行すると
1 2 3 4 5 6 7 |
$ sed '1itext' inputfile1 text aaa bbb ccc ddd eee |
のように出力されます。
標準入力を用いるとしたら以下のそれぞれのコマンドは等価なコマンドになります。
1 2 3 |
cat inputfile1 | sed '1itext' cat inputfile1 | sed '1itext' - sed '1itext' < inputfile1 |
複数のファイルを入力
複数のファイルを入力するとsedコマンドはそれらのファイルを1つのストリームとして扱います。
inputfile2を以下のように想定し、
inputfile2
1 2 3 4 5 |
fff ggg hhh iii jjj |
inputfile1とinputfile2に対して、以下のコマンドを実行すると
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sed '1itext' inputfile1 inputfile2 text aaa bbb ccc ddd eee fff ggg hhh iii jjj |
のように1回だけ文字列が挿入されます。
行指定をそれぞれのファイルに対して行いたい場合は、それぞれのファイルに対してsedを実行するか、GNU拡張の-s(--separete)オプションを利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sed -s '1itext' inputfile1 inputfile2 text aaa bbb ccc ddd eee text fff ggg hhh iii jjj |
スクリプトファイルを入力
-fオプションを用いるとsedのスクリプトを記述したファイルを読み込むことができます。
sedコマンドの処理が決まっている場合はこのオプションを利用して読み込んでも良いでしょう。
例えば、script.sedを作成し、
script.sed
1 |
1itext |
script.sedを利用してsedコマンドを実行すると以下のようになります。
1 2 3 4 5 6 7 |
$ sed -f script.sed inputfile1 text aaa bbb ccc ddd eee |