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