====== sed ======
===== 機能 =====
sedコマンドは、文字の置換を行うコマンドです。
===== 構文 =====
sed [オプション] [コマンド] [ファイル名]
===== オプション =====
|-e|次にくるのがコマンドとする。 |
|-f|次にくるのがスクリプトとする。|
|-i|ファイルを書き換える 。 \\ .[name] を付けるとオリジナルを保存しておく|
===== コマンド =====
|d|行を削除 |
|s/パターン/置換文字列/|各行で最初に一致した文字列だけ置換(s/パターン/置換文字列/) |
|s/パターン/置換文字列/g|全体を置換(s/パターン/置換文字列/g) |
|s/パターン/置換文字列/gi|全体を置換(s/パターン/置換文字列/g) ※大文字小文字関係なく|
|s/パターン/置換文字列/数値|各行で指定した数値番目の文字列だけ置換(s/パターン/置換文字列/数値)|
|s/パターン/置換文字列/3|各行で3番目に一致した文字列だけ置換(s/パターン/置換文字列/) |
===== コマンド例 =====
==== Sed で空白行・空白を削除する ====
color(red){'/^$/d'};が条件とコマンドの個所だが、
/と/の間が条件です。この場合[^]が行頭の意味[$]が行末の意味
つまり行頭からいきなり行末の行を削除するという意味
$ cat test.txt
-------------------------------------
1行目
2行目
3行目
-------------------------------------
$ sed '/^$/d' test.txt
-------------------------------------
1行目
2行目
3行目
-------------------------------------
==== week.txtの1から5行目を削除する。 ====
$ cat week.txt
-------------------------------------
Sunday
Monday
Tuseday
Wensday
Thursday
Friday
Saturday
-------------------------------------
$ sed '1,5d' week.txt
-------------------------------------
Friday
Saturday
-------------------------------------
=== penを山本に置換する。 ===
$ cat test.txt
-------------------------------------
私はpenです。
-------------------------------------
$ sed 's/pen/山本/g' test.txt
-------------------------------------
私は山本です。
-------------------------------------
==== 改行文字も含めて挿入(置換)する方法。 ====
$ cat test.txt
-------------------------------------
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
matsui
-------------------------------------
$ sed '1s/^/1Line\
> /' test.txt
-------------------------------------
1Line
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
matsui
-------------------------------------
==== ファイルを変更、バックアップを取得する ====
- sedコマンドでファイルを変更して保存
- 元ファイルは、.bakを付けて保存
== 元ファイル ==
$ cat test.txt
AAAA
BBBB
CCCC
DDDD
== 実行 ==
$ sed -i.bak 's/CCCC/ZZZZ/g' test.txt
== ファイルは変更される ==
元ファイルは、test.txt.bakとして保存されている
$ cat test.txt
AAAA
BBBB
ZZZZ
DDDD
$ cat test.txt.bak
AAAA
BBBB
CCCC
DDDD
==== 空白、tabを置換 ====
# cat a
aaa bbb ccc
# sed 's/\s//g' a
aaabbbccc
==== 指定した行を表示 ====
[[02_freebsd:80_unixコマンド:01_sed_line_number]]
{{tag>Unixコマンド ファイル操作 sed}}