Mac/Linux シェルの sed コマンド
UB3/informatics/commands_mac/sed
このページの最終更新日: 2024/09/30広告
概要: sed の使い方
sed は stream editor の略で、文字列の置換、削除、抽出などを行うコマンドである。非常に便利であるが、書き方が少し複雑なので、awk とともに「やや難しいコマンド」として認識している。
sed の基本的な使い方は、
である (1)。/ を
しかし、このままでは ターミナル に置換した文字列が出力されるだけなので、このように使うことはあまりない。よくあるのは、次のように cat と繋げて、置換後にファイルとして出力する方法だ。
# cat なしでこう書いても同じ
sed 's/abc/ABC/g' input.file > output.file
g はファイル内の文字列全てを置換するという意味 (2)。これで、input.file の中にある abc という文字が全て ABC に置換され、置換後の ABC を含むファイルの内容全体が output.file として出力されることになる。
この部分のパターンを表にしておく。
/g |
“global” の g か。該当する文字列全てを置換。 |
何もなし |
's/abc/def/' のようにすると、 |
/1 |
上記の「何もなし」と同じ。該当する文字列の、それぞれの行の 1 個目のみが置換される。 |
/2 |
該当する文字列の、それぞれの行の最初の 2 個が置換される。 |
選択した文字列を消去したいときは、置換後の文字列に何も入れず (もちろんスペースも入れず) s/abc//g のようにする。
sed のオプション
-i |
i オプションを使うと、対象ファイルを上書きする。つまり で、input.file というファイル内の文字列が全て置換されることになる。個人的には、変換前のファイルを残しておいた方が安心なので、上記の cat からパイプする方法の方が好みである。 -i".org" とすることで、input のファイル名に .org がついたバックアップファイルが作られるらしい (2) が、これは自分では試したことはない。 また、-i をつけておきながら > で output file を指定する矛盾したコードを書いたときには、 invalid command code S というエラーが出た。 |
sed による記号の置換
sed の基本的使い方は以下であり、/ が置換対象や置換後の文字列を区切る記号として使われている。この場合、
たとえばこの abc をスペースに置換したい場合、単に 's/abc/ /g' とするとエラーになる。スペースが意味を持つ記号であるためである。
この場合は、スペースを
広告
References
- 【Linuxコマンド】sedで文字列を置換する方法. Link: Last access 2021/01/05.
- sedで特殊な記号を置換・削除. Link: Last access 2021/01/05.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。