aコマンド

aコマンドは、現在のパターンスペースの後ろにテキストを追加する。


    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コマンドへ。