水. 1月 15th, 2025
タコさん

今日は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.

予想通りの結果となった。

以上

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です