今日はsedコマンドについて解説するよ!
瀬戸?なにそれ?おいしい?
Sedは何?
sed コマンドは、指定された File パラメーターの行を編集スクリプトに従って変更し、それらを標準出力に書き出します。 sed コマンドには、変更する行を選択するための機能、および選択した行に対してのみ変更を行うための機能などが多数含まれています。
出典:https://www.ibm.com/docs/ja/aix/7.2?topic=s-sed-command
一言でまとめると、テキスト編集の魔法だね。
すごい!日本語で何て読めば良いの?!
日本語で「セド」と読むよ。ぜひ覚えてね。
ちなみに、なんでsedなの?
「Stream EDitor」の略だからだよ。
わかった!記憶力がショボいけど、頑張って頭に入れておく!
使い方
では、実際の使い方について解説します。
基本構文:置換(sとg)
sed 's/置換前文字列/置換後文字列/g' ファイルのPATH
orgin.txtというファイルを用意した。中身は↓通り
$ ls
origin.txt
$ cat origin.txt
Daffodils
I wander’d lonely as a cloud
That floats on high o’er vales
and hills,
When all at once I saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
下のコマンドでorigin.txtの内容にある「I」を全て「You」に変更してみよう。
sed 's/I/You/g' ./origin.txt
全置換で出力された
$ sed ‘s/I/You/g’ ./origin.txt
Daffodils
You wander’d lonely as a cloud
That floats on high o’er vales
and hills,
When all at once You saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
:red_circle: 注意点:出力として原文の内容を置換したものが表示されるだけで、origin.txtの内容は原文のまま。↓のように新規ファイルに保存することでファイルとして出力もできる。
~/Documents/sed »
~/Documents/sed » cat target.txt
Daffodils
You wander'd lonely as a cloud
That floats on high o'er vales
and hills,
When all at once You saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
sとgについて
最初のs:置換処理(substitute)
最後のg:マッチした文字列をすべて置換(global)
:notebook_with_decorative_cover: sの前に数字を入れると、指定した行目だけが対処になる
試しに2行目の「I」だけを「You」に置換してみる。
~/Documents/sed » sed '2s/I/You/g' ./origin.txt
Daffodils
*You* wander'd lonely as a cloud
That floats on high o'er vales
and hills,
When all at once *I* saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
できた。
2から5行目までに限定したい時に、下のように2,5で書けばいける
sed '2,5s/I/You/g' ./origin.txt
基本構文:削除(d)
内容の1行目から3行目を削除して4行目以降を出力するには、dで指定する
$ sed 1,3d ファイルのPath
実際やってみる
~/Documents/sed » cat origin.txt
Daffodils
I wander'd lonely as a cloud
That floats on high o'er vales
and hills,
When all at once I saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
~/Documents/sed » sed 1,3d ./origin.txt
and hills,
When all at once I saw a crowd,
A host of golden daffodils,
Beside the lake, beneath the trees
Fluttering and dancing
in the breeze.
予想通りの結果となった。
以上