sedコマンド触ってみた
はじめに
sed コマンドって見たことあるけど実際に自分で使ったことないな。。。
ファイルや標準出力を編集するコマンドのようだけど・・・
と思ってお勉強した次第です
基本
・引数で指定したファイルに対してスクリプトで指定した操作(挿入や置換など)を行い、その結果を標準出力に出力する
・リダイレクトすればファイルに出力することも可能
・引数の対象ファイルを省略した場合は、標準入力が処理対象になる
$ sed [-オプション] スクリプト [対象ファイル]
文字列の置換
・基本
※置換前文字列/置換後文字列がスペースを含む場合は""でくくらないと複数文字列とみなされて怒られるのでくくること
$ sed s/置換前文字列/置換後文字列/ ファイル
# sample.txtで一番最初のtestをTESTに置換する
例)$ sed s/test/TEST/ sample.txt
・すべてを置換したい
上記だと一番最初に見つかった置換対象だけを置換するので、対象をすべて置換したい場合はおしりにgをくっつける
$ sed s/置換前文字列/置換後文字列/g ファイル
# sample.txt内すべてのtestをTESTに置換する
例)$ sed s/test/TEST/g sample.txt
・指定した部分を置換したい
s(スクリプトコマンドというらしい)の前にgrepとかで使う正規表現(パターン)か行番号を指定する
パターンを使用する際は//
で囲む
# 行番号を指定する場合
$ sed 行番号s/置換前文字列/置換後文字列/ 対象ファイル
# sample.txt4行目のtestをbigloooooveに置換
例)$ sed 4s/test/biglooooove/ sample.txt
# sample.txt2~5行目に含まれるniceをgoodに置換
例)$ sed 2,5s/nice/good/ sample.txt
# パターンを指定する場合
$ sed /パターン/s/置換前文字列/置換後文字列/ 対象ファイル
# sample.txtにhiを含む行にhelloがあったらhow are youに置換する
例)$ sed /hi/s/hello/"how are you"/ sample.txt
文字列(行)の追加、挿入
・基本
※追加は指定した行の後ろに追加される
※挿入は指定した行の前に挿入される
※ファイルの最終行は$
で表す。(エスケープ必要)
$ sed 追加したい行a 追加したい文字列 対象ファイル
$ sed 挿入したい行i 挿入したい文字列 対象ファイル
# sample.txt3行目の後ろにgoodbyを追加する
例)$ sed 3agoodby sample.txt
# sample.txt3行目の前にgoodbyを挿入する
例)$ sed 3igoodby sample.txt
# 末尾にtheEndを追加する
例)$ sed \$atheEnd sample.txt
# 末尾1つ前にtheEndを挿入する
例)$ sed \$itheEnd sample.txt
・1か所に複数行を追加・挿入したい
\n
で区切って追加・挿入する
$ sed 追加したい行a 追加したい文字列\n追加したい文字列 対象ファイル
$ sed 挿入したい行i 挿入したい文字列\n挿入したい文字列 対象ファイル
# sample.txt3行目の下にgoodbyとgoodmorningを追加する
例)$ sed 3agoodby\ngoodmorning sample.txt
# sample.txt3行目の前にgoodbyとgoodmorningを挿入する
例)$ sed 3igoodby\ngoodmorning sample.txt
・複数個所に追加・挿入したい
-e
で複数書く
$ sed -e 追加したい行a追加したい文字列 -e 追加したい行a追加したい文字列 対象ファイル
$ sed -e 挿入したい行i挿入したい文字列 -e 挿入したい行i挿入したい文字列 対象ファイル
# sample.txt3行目の下にgoodby、5行目の下にgoodmorningを追加
例)$ sed -e 3agoodby -e 5agoodmorning sample.txt
# sample.txt3行目の前にgoodby、5行目の下にgoodmorningを挿入
例)$ sed -e 3igoodby -e 5igoodmorning sample.txt
文字列の削除
・基本
$ sed 削除したい行d
# sample.txt3行目を削除
例)$ sed 3d sample.txt
# sample.txt5~10行目を削除
例)$ sed 5,10d sample.txt
・パターンに合致する箇所を削除
正規表現が使える
$ sed /パターン/d
# sample.txtのniceを含む行を削除
$ sed /nice/d sample.txt
勉強してみて
一旦基本のここまでにしますが、もっと複雑なこともできるようですね。。。
難しい、、、精進します。。
Author And Source
この問題について(sedコマンド触ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/tenshokumattanashi/items/f61075a9c4d1adfc766f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .