49
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sedコマンド基本

Posted at

文字列置換や抽出に利用されるsedコマンドですが、今までなんとなく使用していたため調べ直してまとめてみました。

sedコマンドとは

sedとはStream EDitorの略で、入力されたテキストデータを1行ずつ読み込んで指定した処理を適用して出力を行います。主に文字列の置換や抽出に用いられます。

基本的な使い方

echoコマンドを用いた例が一番わかりやすいです。

$ echo '一郎くんおはようございます。' | sed 's/一郎/二郎/'
二郎くんおはようございます。

このように正規表現を用いて文字列の置換を行うことができます。

また、特定の文字列を空文字に置換するすることにより、文字列の抽出を行うこともできます。

$ echo 'TEL: 0120-000-000' | sed 's/[A-Z :]//g'
0120-000-000

一番基本となる使い方はファイルを指定して処理を行う方法です。

$ cat hoge.txt
abcdefg

$ sed 's/abc/def/' hoge.txt
defdefg

用途別コマンド例

一致する文字列を全て置換

正規表現のgオプションを用いて一致する文字列を全て置換できます。

$ echo 'abcdefabc' | sed 's/abc/def/g'
defdefdef

複数の処理を行う

-eオプションを使うと複数条件指定できます。

$ echo abcdefghi | sed -e "s/abc/xxx/" -e "s/ghi/zzz/"
xxxdefzzz

行を削除

dコマンドを用いて特定の行を削除できます。

$ cat hoge.txt
abcdefg
1234567
aaaaaaa
bbbbbbb

$ sed '1,3d' hoge.txt
bbbbbbb

特定の文字列を含む行を削除する場合

$ sed "/abc/d" hoge.txt
1234567
aaaaaaa
bbbbbbb

ファイルを上書き

-iオプションを使用すると、ファイルの内容を上書きすることができます。

$ cat hoge.txt
abcdefg

$ sed -i 's/abc/def/' hoge.txt
defdefg

$ cat hoge.txt
defdefg

指定した行だけ表示

-nオプションを用いて指定した行を表示できます。

$ cat hoge.txt
abc
def
ghi
jkl

$ sed -n 2,4p hoge.txt
def
ghi
jkl

まとめ

sedコマンドの基本的な使い方についてまとめてみました。使用方法やオプションなど忘れてしまった際は是非見返してください。

参考URL

49
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?