sed
コマンド
お兄ちゃんから
正規表現を使ったコマンドを
教えてもらっているんだよ!
前回は
grep
だったね
今回は
sed
を
扱ってみよう!
sed
は
エディタなんだ!
そう!
エディタなので色々な編集ができるんだ
全部の機能を一度には覚えられないので
今回はよく使われる
「置換コマンド
を覚えよう!
以下のように使用するよ
s
(substitute) 」sed [オプション]... 's/置換前/置換後/フラグ' ファイル
オプション | 役割 |
---|---|
-i [extension] | 編集結果を標準出力ではなく編集対象ファイルに書き出す。ファイル名extension というファイル名で編集前のバックアップを作成する |
ファイルの各行で最初に見つかった
置換前
を置換後
に置き換えた内容を出力するんだ置換前
の指定に正規表現が使えるんだね!g
だけ覚えよう最初に見つかったものだけなく全ての 置換前
を置換後
に変更するよでは実際の例を見てみよう
sed
で前回扱った/etc/passwd
を加工してみよう情報が
:
区切りになっていて最初がユーザ名だったよね!そのことを知っていれば以下のようにすることで全ユーザを列挙できるんだ
sed 's/:.*//' /etc/passwd
どんな結果になるのかな?
root
bin
...
shigeru
midori
区切り文字
:
とその後に続く任意の文字列 .*
を空っぽに置き換える…つまり削除するんだね!そういうことだねこれでユーザ名一覧を取り出しているんだ
/
)」実は
s
の直後に来る文字が置換操作の区切り文字になるんだなので以下のように別の区切り文字を使えるよsed \
's%/home/shigeru%/home/midori%g' \
<<< /home/shigeru/diary
なるほど!この例では 「スラッシュ( だけど 不都合なときは別の文字を使ってもいいんだ!
%
を区切りに使っているんだね!普段は/
)」今回は
sed
のうち置換の方法を学んだよ!sed
では置換以外にも多くの編集操作が用意されているよ大抵のテキスト処理はsed
だけでできてしまう万能コマンドなんだ