CentOSのaliasesファイルを、メンテナンスで修正しなければならず、手順としてviで修正するより、sedで追記する方法はないか調べてみた。
行指定する方法はあると思うが、特定の文字列にマッチした行に対する操作をしたかったため、今回の備忘録を作成。
最後にマッチした行に対する操作は、ファイルを逆から読み込むしかなさそう。
tacコマンドを使ってファイルを逆から読み取り、最後に元に戻すという操作になる。
以下のコマンドは、[特定文字]にマッチした最終行の
次の行に、指定した[追加文字]を追記する。
cat [ファイル名] | tac | sed '0,/[特定文字]/{/[特定文字]/s/^/[追加文字]\n/}' | tac
ちなみにsedコマンドで直接ファイルを修正しようとすると、ファイルがありませんという結果になるので、リダイレクトでファイルの上書きをするしかなさそう。
もちろん元のファイルはバックアップを取っておく。
cat [ファイル名] | tac | sed '0,/[特定文字]/{/[特定文字]/s/^/[追加文字]\n/}' | tac > [保存ファイル名]
参考サイト↓
最初にマッチした行に対する操作
最後にマッチした行に対する操作