sed オプション一覧
一覧
以下に、sed
コマンドの主なオプション一覧とその使い方を具体的な例題とともに説明します。
sed
の主なオプション一覧
オプション | 説明 |
---|---|
-n | 通常の出力を抑制し、指定したパターンや行だけを出力する |
-e | スクリプトを指定して実行する |
-i | 元のファイルを直接編集する(バックアップオプション付き) |
-f | スクリプトファイルを指定して実行する |
-r | 拡張正規表現を使用する |
$ | ファイルの最終行を対象にする |
q | 指定された行で処理を終了する |
d | 指定された行を削除する |
a | 指定行の後にテキストを挿入する |
i | 指定行の前にテキストを挿入する |
p | 指定したパターンに一致する行を表示する |
s | パターンに一致する部分を置換する |
具体例
例1: エラーログを抽出
sed -n '/error/p' log.txt
log.txt
内の「error
」を含む行だけを出力します。
例2: 複数のファイルから特定の行範囲を抽出
sed -n '10,15p' file1.txt file2.txt
file1.txt
とfile2.txt
から10行目から15行目を表示します。
例3: 特定行の後にテキストを追加
sed '3a This is a new line after line 3.' file.txt
file.txt
の3行目の後に「This is a new line after line 3.」を追加します。
例4: 特定行の前にテキストを追加
sed '5i Inserted before line 5.' file.txt
file.txt
の5行目の前に「Inserted before line 5.」を挿入します。
例5: 処理を特定行で終了
sed '7q' file.txt
file.txt
の1行目から7行目までを処理して終了します。
例6: 特定の行を削除
sed '8d' file.txt
file.txt
の8行目を削除します。
例7: 末尾行を削除
sed '$d' file.txt
file.txt
の最終行を削除します。
例8: 正規表現を用いて文字列を置換
sed -r 's/[0-9]+/###/g' data.txt
data.txt
内の数字をすべて「###」に置き換えます。
例9: ファイルを直接編集
sed -i 's/foo/bar/g' config.txt
config.txt
の中で「foo」を「bar」に置き換え、元のファイルを直接変更します。
例10: スクリプトファイルで処理
echo "s/old/new/g" > script.sed
sed -f script.sed file.txt
script.sed
ファイルを使ってfile.txt
の中の「old」を「new」に置き換えます。
行指定
1. 行範囲外での文字列置換
コマンド例
sed -e '3,6!s/old/new/g' example.txt
説明
3,6!
: 3行目から6行目を「範囲外」と指定します(!
が範囲外を意味)。s/old/new/g
:old
をnew
に置換します。g
は全体置換(global)を指定します。
使用例
入力ファイル (example.txt
):
line1
line2
line3
line4
line5
line6
line7
実行:
sed -e '3,6!s/line/row/g' example.txt
結果:
row1
row2
line3
line4
line5
line6
row7
解説: 3行目から6行目以外の行(1, 2, 7行目)でline
をrow
に置換します。
2. 特定の文字列範囲内での文字列置換
コマンド例
sed -e '/start/,/finish/ s/old/new/g' example.txt
説明
/start/,/finish/
:start
という文字列を含む行から、finish
という文字列を含む行までの範囲を指定。s/old/new/g
: 範囲内でold
をnew
に置換。
使用例
入力ファイル (example.txt
):
header
start
line1
line2
finish
footer
実行:
sed -e '/start/,/finish/ s/line/row/g' example.txt
結果:
header
start
row1
row2
finish
footer
解説: start
とfinish
の間の行(2〜5行目)でline
をrow
に置換します。
3. 特定の文字列範囲外での文字列置換
コマンド例
sed -e '/start/,/finish/ !s/old/new/g' example.txt
説明
/start/,/finish/ !
:start
からfinish
の間を「範囲外」と指定。s/old/new/g
: 範囲外でold
をnew
に置換。
使用例
入力ファイル (example.txt
):
header
start
line1
line2
finish
footer
実行:
sed -e '/start/,/finish/ !s/line/row/g' example.txt
結果:
header
start
line1
line2
finish
footer
解説: 範囲外(header
とfooter
)でline
をrow
に置換します。
4. 特定パターン行での文字列置換
コマンド例
sed -E '/^#/s/old/new/g' example.txt
説明
/^#/
: 行の先頭が#
で始まる行を指定。s/old/new/g
: 該当行でold
をnew
に置換。
使用例
入力ファイル (example.txt
):
#comment1
line1
#comment2
line2
実行:
sed -E '/^#/s/comment/note/g' example.txt
結果:
#note1
line1
#note2
line2
解説: 行の先頭が#
で始まる行でcomment
をnote
に置換します。
5. 特定パターン行以外での文字列置換
コマンド例
sed -E '/^#/!s/old/new/g' example.txt
説明
/^#/!
: 行の先頭が#
で始まらない行を指定。s/old/new/g
: 該当行でold
をnew
に置換。
使用例
入力ファイル (example.txt
):
#comment1
line1
#comment2
line2
実行:
sed -E '/^#/!s/line/row/g' example.txt
結果:
#comment1
row1
#comment2
row2
解説: 行の先頭が#
で始まらない行でline
をrow
に置換します。
6. 特定範囲内の文字列置換
コマンド例
sed -e '2,5s/old/new/g' example.txt
説明
2,5
: 2行目から5行目の間を範囲として指定。s/old/new/g
: 範囲内でold
をnew
に置換。
使用例
入力ファイル (example.txt
):
line1
line2
line3
line4
line5
line6
実行:
sed -e '2,4s/line/row/g' example.txt
結果:
line1
row2
row3
row4
line5
line6
解説: 2行目から4行目の間でline
をrow
に置換します。
busybox
busybox --install C:\path\to\directory
ダブルコーテーションを使ってください
"C:\app\busybox\sed.exe" -e "$d" file.txt
ディスカッション
コメント一覧
まだ、コメントがありません