sed コマンドを使ってファイル編集

sed コマンドを使うことで、ファイルの編集ができます
編集だけなら vim でも十分なのですが
sed コマンドを使い編集ができるようになると、
スクリプトにして処理することができるようになります
一番活用できるのは、サーバーの設定をするとき
仮想環境でサーバー構築するときに、毎回 vim でファイルを開いて
編集し。コマンドを打ちつづけるのはかなりのロスがでてきます
また、手打ち入力は練習にはよいのですが
入力ミスなどでエラーがおきる可能性も高くなります
このため、sed コマンドを組み入れたスクリプトを使うことで編集のミスを
減らし、構築の手間を減らします
以前。スクリプトを混ぜたサーバー構築実験
で簡単ながらもいちおうは設定できるスクリプトをつくりました
この中で
#7行めに追記(自FQDN名を指定)
sed -i “77i myhostname = mail.linuxwiki.com” /etc/postfix/main.cf
のように文字列を挿入することがあったため
応用で複数行の文字列を挿入できないか調べてみました
検索キーワードは
Linux ファイル編集 sed
あたりで行って見ました
複数行の追記については
sed aコマンド、 iコマンドの動作(指定文字列の挿入、追加) 【Linuxコマンド】
を参考にさせていただきました
sed ‘3a\ABC\
> DEF’ sample.txt
というように\
コマンドで入力するときのように改行して行うか
もしくは
sed ‘3a\ABC\nDEF’ sample.txt
というように\nで改行すればよいようです
ちなみに、このサイトを参考にさせていただいて
気づいたのですが
i だと行の前
r だと行の後
になるようです
sed ‘3a\ABC\nDEF’ sample.txt
だと3行目の後
sed ‘3i\ABC\nDEF’ sample.txt
なら3行めの後になるようです
そして、今回。もっとも探していたもののヒントが見つかりました
sed rコマンドの動作(ファイル読み込み) 【Linuxコマンド】
に載っていました
これを使うことで、よくある設定ファイルのところに
追記する内容というものをスクリプトで処理できるようになりそうです
sed ‘1r read.txt’ sample.txt
とすることで
sample.txt の
1行めの後に read.txt の内容を追記できます
ただし、このままではファイルの編集はされていません
このため、
sedコマンドでファイルを上書き編集
を参考に
sed ‘1r read.txt’ sample.txt

sed -i -e ‘1r read.txt’ sample.txt
とすることで、上書きすることができます
これに加えて
http://d.hatena.ne.jp/anmino/20090809/1249786160
のような処理を加えるとかなり効率的な操作ができるようになりそうです
最終行への追記も考えました
$を指定すれば最終行へ追記することができます
sed -i -e ‘$r read.txt’ sample.txt
とすれば、sample.txt の最終行へ
read.txt の内容が追記されます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です