- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- シェルスクリプト/sedコマンド へ行く。
sedコマンド
パターン
量指定・後方参照
- 量指定
- \{N\}
- 後方参照
- /\(.*\)/\1/
7桁郵便番号1234567をハイフンを差し込んで123-4567に。
echo "1234567" | sed -e 's/\(.\{3\}\)\(.\{4\}\)/\1-\2/'
置換
複数置換する
sed -e 's/H/h/g' -e 's/O/o/g' 1.txt
hELLo WoRLD
eオプションを重ねる。または、
sed -e 's/H/h/g; s/O/o/g' 1.txt
「;」でつなぐ。
後方参照
対象を「\(\)」でくるみ、「\1」で参照する。
echo abc | sed 's/a\(.\)c/\1/'
=> b
マッチした文字列を挿入する
「&」を使う。
echo abc | sed 's/a/&XYZ/'
=> aXYZbc
echo abc | sed 's/.*/&XYZ/'
=> abcXYZ
行末に文字列を挿入する
sed -e 's/$/ END/' 1.txt
HELLO END WORLD END
マッチした行の間にある全ての行に対して置換する
sed '/TWO/,/FOUR/s/^/#/' 1.txt
ONE #TWO #THREE #FOUR FIVE
「TWO」から「FOUR」までの行に対してs/^/#/を実行する。
ファイルの先頭行に文字列を挿入する
sed '1s/^/abc\n/' 1.txt
検索・抽出
マッチした行だけを表示する
sed -n '/abc/p' 1.txt
sedコマンドは-nオプションを付けないとファイルの全内容を表示する。ので、↑の場合、nオプション無しだと二重に表示される。ので、nオプションを付ける。
マッチした行を除外する
sed '/abc/d' 1.txt
指定した行番号の行を除外する(N,Md)
cat 1.txt
=> 01 02 03 04
sed '2,3d' 1.txt
=> 01 04
sed '2,$d' 1.txt
=> 01
最初にマッチした行だけ置換する(0,/REGEXP/s/foo/Bar/)
cat 1.txt abc 122 def 234
sed -e '0,/2/s/2/X/' 1.txt abc 1X2 def 234
「0,/REGEXP/」で行を指定した後に(REGEXPはここでは「2」)、「s/2/X/」で2をXに置換すると、4行目の「234」の「2」は置換されない。