====== 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}}