ここでは、aコマンド、iコマンド、cコマンドについて説明します。
また、行を削除する手段としてdコマンドについて説明します。
GNU sedでaコマンド等をコマンドライン上で利用する場合には少し注意が必要になります。
行の後にテキストを追加
aコマンドは行の後にテキストを追加できます。
もう少し詳しく説明するとsedが行を取り込む前にそのテキストを標準出力するようにスケジューリングします。
aコマンドは
1 2 |
a\ text |
のように使うことができます。または、GNU拡張の代替構文として
1 |
a text |
があります。
append.sedを以下のように作成し、
append.sed
1 2 |
a\ text |
test.txtを用意し、
test.txt
1 2 3 |
aaa bbb ccc |
これらのファイルを用いてsedコマンドを実行すると以下のようになります。
1 2 3 4 5 6 7 |
$ sed -f append.sed test.txt aaa text bbb text ccc text |
またはGNU拡張の構文を用いることで同様な結果を得る事もできます。
1 2 3 4 5 6 7 |
$ sed 'a text' test.txt aaa text bbb text ccc text |
最後の行への追加
最後の行に追加したい場合は
1 |
sed '$a text' test.txt |
とします。
行の手前にテキストの追加
iコマンドは行の手前にテキストを追加することができます。
別の言い方を行うと、テキストを標準出力する機能になります。
iコマンドは
1 2 |
i\ text |
のように使うことができます。または、GNU拡張の代替構文として
1 |
i text |
があります。
GNU拡張での例を以下に示します。
1 2 3 4 5 6 7 |
$ sed 'i text' test.txt text aaa text bbb text ccc |
最初の行への追加
最初の行に追加したい場合は
1 |
sed '1i text' test.txt |
とします。
行をテキストに変更
cコマンドは行をテキストに変更することができます。
もう少し詳しく説明するとパターンスペースを削除し、テキストを出力して、次のサイクルに移行します。
cコマンドは
1 2 |
c\ text |
のように使うことができます。または、GNU拡張の代替構文として
1 |
c text |
があります。
GNU拡張での例を以下に示します。
1 2 3 4 |
$ sed '2c text' test.txt aaa text ccc |
テキストの追加等のコマンドを利用するときの注意点
a,i,cコマンドはコマンドラインから用いる場合、
1 |
sed 'a text;s/bbb/ddd/' |
のような使い方はできません。
a,i,cコマンドを含む複数のコマンドを用いたい場合は-eオプションを複数回用います。
1 2 3 4 5 |
$ sed -e '2c ddd' -e '3a text' test.txt aaa ddd ccc text |
行の削除
dコマンドは行の削除のように利用できます。
もう少し詳しく説明するとパターンスペースを削除し、次のサイクルに移行します。
1 2 3 |
$ sed '/bbb/d' test.txt aaa ccc |