aコマンドは、現在のパターンスペースの後ろにテキストを追加する。
追加するテキストは複数行にできるが、改行は行末に\
を付ける。追加1行目テキストの行頭がスペースの場合、aコマンドの後ろに\
を付けなければならない。テキストに文字としての\
を含ませたいなら、\\
とする。
# 1行目の後に2行テキストを追加したい
input='1行目
2行目
3行目'
# 下記4つのスクリプトはすべて同じ意味
# ただし、もし追加1行目テキストの行頭にスペースがあるなら、a\のやり方で。
# aの後ろにスペース一つ
script='1 a 追加1行目\
追加2行目'
# aの後ろにスペース複数
script='1 a 追加1行目\
追加2行目'
# a\の後ろにスペースなし(スペースがあれば、それも追加1行目の扱い)
script='1 a\追加1行目\
追加2行目'
# a\の後ろにスペースなしですぐに改行
script='1 a\
追加1行目\
追加2行目'
echo "$input" | sed "$script"
出力はこうなる。
1行目 追加1行目 追加2行目 2行目 3行目
上記のように行が追加されても、その後のアドレスの行数カウントには含まない。上記出力の4行目は、アドレスの扱いは2行目。
input='1行目
2行目
3行目'
script='1 a 追加1行目\
追加2行目
2 d # このアドレスの「2」はあくまで元の入力2行目のこと'
echo "$input" | sed "$script"
上記は元の入力2行目が削除されるので、出力はこうなる。
1行目 追加1行目 追加2行目 3行目
行末を示すアドレスの$
を使う。
input='1行目
2行目
3行目'
# アドレスを$にする。
script='$ a 追加1行目\
追加2行目'
echo "$input" | sed "$script"
先頭行に挿入するならiコマンドへ。