今回は前回出てきた"sed"コマンドについてのメモです。
例:$sed -e "s/abc/def/g"
・"s/abc/def/"で行の一番最初の文字列"abc"を"def"に置き換え。
・"s/abc//"で行の一番最初の文字列"abc"を削除。
・"s/^abc//"で行頭だけを文字列"abc"とマッチングすれば削除。
・"s/abc\$//"で行末だけを文字列"abc"とマッチングすれば削除。
・"s/abc/abcdef/"で文字列"def"を"abc"の後に追記。
・"s/^/def/"で文字列"def"を行頭に追記。
・"s/\$/def/"で文字列"def"を行末に追記。
・クォテーション内のドット(.)は任意の一文字で、アスタリスク(*)は直前の文字の繰り返し(0個も含む)。この2つを組み合わせた(.*)結果は行全て。
・文字列の切り取り
-"s/abc.*//"で文字列"abc"以降を消去。
-"s/abc.*def//"で文字列"abc"~"def"までを消去。
・大文字と小文字の入れ替え "$cat file | tr '[A-Z]' '[a-z]' > lowerfile"
・タブは""、スペースは""と表記する。
・"/abc/d"で文字列"abc"を含んだ行を削除。
・""n,ms/abc/def/g" file"でfileのn~m行目の文字列"abc"をすべて"def"に置き換え。
・""1d" file"でfileの一行目削除。
・""1,nd" file"でfileの1~m行目の削除。
・'\$d'で最終行削除。注:シングルクォート内はすべて文字と認識されるので'$'の前の'\'は必要ない。
・"sed -n 'mp' file"でfileのm行目をプリント。
・'n,mp'でn~m行目をプリント。
・'nq'で最初からn行目までプリントできるが、'q'はquitで"sed"コマンドが終了されるので続けて他の処理をできない。
・'!'をクォテーション内の処理コマンド('d'や'q')の直前に置くと逆の操作をさせる。
・"grep -n '.*'"でファイルの行すべてに表示するとき行番号をつける。
参考資料:入門UNIXシェルプログラミング 改訂第2版 第6,7章(発行所:SBクリエーティブ株式会社)
シェルスクリプト その1
シェルスクリプト その2
シェルスクリプト その3
シェルスクリプト その4
シェルスクリプト その5
シェルスクリプト その7