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」は置換されない。

シェバングの置換(1行目のみ)

cat 1.pl | sed -e '1s#/usr/bin/perl#/usr/local/bin/perl#'

参考になるサイト


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-08-05 (火) 10:45:13 (1541d)