sedコマンドパターン量指定・後方参照
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#' 参考になるサイト |
|