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









ディスカッション
コメント一覧
まだ、コメントがありません