sedコマンド

今回は、以前のエントリーで「ゾンビ探しのスクリプト」をご紹介しましたがその時には理解できなかった、sed コマンドを取り上げます。

sed -e "s/foo/bar/g" ファイル名

意味は、ファイル[ファイル名]の中の文字列を次の条件式”s/foo/bar/g”で、foo をbar に書き換えるということで、

sed 's/^ \{1,\}//g'

の場合は、PID出力の中の先頭にマッチ^する半角スペース の1回以上の繰り返し{1,}をすべて削除する//、という意味になります。

前回のエントリーで、Wordpress のメディアライブラリを表示するadmin-ajax.phpファイルを書き換えるシェルスクリプトは、-i でファイルの上書き保存とバックアップを作るオプションを使って、

sed -i".bak" -e "s/foo/bar/g" admin-ajax.php

実際には、foo とbar に前回のコードを代入して「/(スラッシュ)」と「;(セミコロン)」と「$(ダラー)」をエスケープして、「\n(改行コード)」を追加して

sed -i".bak" -e "s/@header( 'Content-Type: text\/html\; charset=' . get_option( 'blog_charset' ) )\;/if(in_array(\$_POST['action'], array('query-attachments', 'send-attachment-to-editor'))){\n@header('Content-Type: application\/json\; charset=' . get_option('blog_charset'))\;\n}else{\n@header( 'Content-Type: text\/html\; charset=' . get_option( 'blog_charset' ) )\;\n}/g" admin-ajax.php

となります。

参考URL:https://open-groove.net/linux-command/sed-edit-files/
http://qiita.com/takech9203/items/b96eff5773ce9d9cc9b3
http://www.megasoft.co.jp/mifes/seiki/meta.html