Linuxノートを遊ぶ——『sedとawk』読書ノート(1)

2659 ワード

昨日同僚からこの本をもらいました.http://book.douban.com/subject/1236944/、sedとawkの2つのツールはずっと使っていますが、勉強の道は多くの場所から来ています.主にブログ、フォーラム、他の人のコードです.そのため、多くのものをマスターするのが足りないと感じて、昼食の休みの时間で真剣にこの本を読んで、系統的に勉強するつもりです.
1.edの使用について
何を勉強しても私たちはその歴史を勉強しています.edはUNIXの下で最初の行エディタで、その後のsed、vi、grepなどのツールはedに基づいて派生した.百科事典では、sedはedの直系子孫であり、stream editorの略である.viはBill Joyがedに不満を持って開発したものである.後でviとsedの多くの編集コマンドのモードがedと似ていることがわかります.
edの基本的な使用は、まずlistという一般的なテキストファイルを作成します.内容は以下の通りです.
John Daggest, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkasm, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA
edを使用してファイルを開くと、ファイルの最後の行にナビゲートし、現在のファイルの文字数を表示します.
samchi@ubuntu:~/works/myworks/shell$ ed list
342
では、現在の行を印刷するなど、編集コマンドを入力してインタラクティブな操作を行うことができます.
p
Sal Carpenter, 73 6th Street, Boston MA
行の数を直接入力すると、編集したい行に移動できます.たとえば、次のようになります.
1
John Daggest, 341 King Road, Plymouth MA
この行を削除するには、コマンド「1 d」を入力するだけです.正規削除もサポートされます.たとえば、次のようになります.
/VA/d
このコマンドは、「VA」を含む行を削除します.
前にアルファベット「g」を付けると、VAを含むすべての行が削除されます
g/VA/d
はedでもテキストを置換することができ、置換の命令はviと類似している.
[address] s/pattern/replacement/flag
たとえば、テキストファイルが1行しかない場合があります.
SamChi, SamChi
はedで置換されます.
samchi@ubuntu:~/works/myworks/shell$ ed edtest 
14
s/Sam/Jack/
1
JackChi,SamChi
この行には1つのSamしか置き換えられていません.もしすべてのSamを置き換えるなら?後にflag、すなわちgを追加する必要があります
samchi@ubuntu:~/works/myworks/shell$ ed edtest 
14
1
SamChi,SamChi
s/Sam/Jack/g
1
JackChi,JackChi
グローバルに置換を検索する場合は?
samchi@ubuntu:~/works/myworks/shell$ ed ./edtest 
42
g/Chi/s/Sam/Jack/g
1
JackChi,JackChi
2
SamLi, SamLi
3
JackChi, JackChi
以上の命令は、グローバルルックアップラインにChiが含まれ、その中のSamをJackに置換することであり、前後の2つのgに注意し、1つ目のgはファイル全体を検索することを意味し、2つ目のgは置換ライン内のすべての語を一致させることを意味する.
一致する正則が置換する正則と一致する場合、置換する正則は省略できます.たとえば、次のようになります.
samchi@ubuntu:~/works/myworks/shell$ ed ./edtest 
42
g/Chi/s//Wang/g
1
SamWang,SamWang
2
SamLi, SamLi
3
SamWang, SamWang
追加edコマンド:
ファイルを保存:
1,$w ./edtest2
46
現在のファイル全体を名前で保存します.1,$は、最初の行から最後の行に名前を付けて保存することを示します.名前を付けて保存するには、行の数を自由に選択できます.なお注意が必要なのは、小文字wは上書き保存、大文字Wは追加保存です.またvimと同様にwqも保存して終了する役割を果たす.強制終了する場合はQ命令を使用します.
指定した行の内容を表示します.
samchi@ubuntu:~/works/myworks/shell$ ed ./edtest
42
1,$n
1	SamChi,SamChi
2	SamLi, SamLi
3	SamChi, SamChi