最終更新:
engineernochiebukuro 2009年12月15日(火) 23:15:26履歴
[ address [ ,address ] ] [ ! ] command [ arguments ]
標準的な使い方は、次のようになる。
$ sed -e 's/OldText/NewText/' samplefile
この例は、samplefile の中の、"OldText" という文字列を "NewText" という文字列に変換し、標準出力に出力する。
"-e"オプションは、その後の文字列が編集用のコマンドであると示すものである。通常は編集用コマンドを複数指定する場合に使う。編集用コマンドが1つだけの場合は"-e"は省略することができる。
ファイルが指定されていない場合は、標準入力を処理する。
sed はデフォルトでは、変換対象では無い行も含めすべての行を標準出力に出力するが、文字列を置き換えた行だけを出力するには、"-n"オプションを使用する。
"-n"オプションを使うときは、必ず"p"を合わせて使う必要がある。
$ sed -n -e 's/OldText/NewText/p' samplefile
通常は"/"をデリミタとして使用するが、別の記号をデリミタにすることもできる。文字列の中に"/"が含まれている場合などにデリミタを変更すると良い。デリミタを変更するためには、特別な宣言をする必要はない。
以下の例では、デリミタを "%" にしている。
$ sed -e 's%OldText%NewText%'
ドット(.) : 任意の1文字を表す
アスタリスク(*) : 直前の文字が任意の個数(0個も含む)連続することを表す
例)
"..." : 任意の3文字
"a*" : a, aa, aaa など、a が任意の個数続く文字列
".*" : 任意の文字列。どんな文字列もマッチする。(Nullも含む)
OldText という文字列を NewText という文字列に変換する。
g がなければ、その行に出てくる最初の文字列だけを対象にする。
$ sed -e 's/OldText/NewText/'
g を付けると行全部を対象にする。
$ sed -e 's/OldText/NewText/g'
行の最後にTextという文字列がある場合に、その文字列を削除する。
$はシェルに解釈させないように\でエスケープする必要がある。
「"」の代わりに「'」を使うとエスケープする必要が無い。
$はシェルに解釈させないように\でエスケープする必要がある。
$ sed -e "s/Text\$//"
「"」の代わりに「'」を使うとエスケープする必要が無い。
$ sed -e 's/Text$//'
例1) id コマンドの出力結果から ID を取り出す
id の出力
$ id uid=1001(user) gid=1000(usergrp)
$ id | sed -e 's/uid=//' -e 's/(.*//' 1001
文字列 "uid="と "("以降の文字列を削除している。
例2) id コマンドのユーザ名を取り出す
$ id | sed -e 's/uid=.*(\(.*\)) gid=.*/\1/' user
最初の".*" はユーザID, 2番目の".*"はユーザ名を表し、"gid=.*"が残りの部分を表している。
取り出したいのは2番目の".*"の部分なので、丸括弧を使って取り出したい部分を括り、後ろの"//"部分を"/\1/と指定することで取り出している。
つまり、 \(〜\) で囲んだ部分は、\1, \2, \3 ・・・で後方参照することができる。
例3) 文字列の最初から5文字分を切り取る
$ sed -e 's/^\(.....\).*/\1/' file
□awk を使う場合
例1) 文字列の最初から5文字分を切り取る
$ awk '{printf "%-.5s\n", $0}' <file
□cut を使う場合
$ echo "STRING" | cut -c1-5
(sed では無いがおまけ。)
fileの中身を全て小文字にしfile1に出力する。
$ cat file | tr '[A-Z]' '[a-z]' > file1
□参考
ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/2006022...
タグ
このページへのコメント
Производствосветодиодных электронных табло, бегущих строк, табло для АЗС
We are excited to tell you about the WEBPILOT franchise opportunity! We offer our franchisees an outstanding IT franchise opportunity that allows you to meet the communication needs of businesses in your area. You can learn from our experience to build a strong business.
We propose to open your own business (web studio) IT franchise in your country or city. We offer trainings and all the materials you need for an immediate start.
Email: seorayua@gmail.com
Whatsapp: +79063121620
Our goal to provide you with excellent teaching of beauty services, help in achieving your goals, and undivided attention you deserve.
Our experienced, professional educational staffs, assist and instruct the students in the use of the latest technologies. Each and every students have extensive training and truly loves this industry. We love nothing more than helping you to realize how great your experience at our learning institute can be.
All courses are fully accredited by the KHDA, Dubai, UAE.
GLAM CREATIVE is a representative of exclusive professional products of the beauty industry in Middle East
We invite to cooperation trainers and founders of professional brand with expert products and treatments.
Hello. And Bye.
Hello. And Bye.