プロが教える店舗&オフィスのセキュリティ対策術

現在Linuxの入門書を読んでいます。
その書籍のコマンドに少し触れているページで、
「高度なテキスト処理を行う」コマンドとしてawkとsedが紹介されています。

(1)このawkとsedの違いについてですが、以下のような考えでよろしいでしょうか?
「概念、シンタックス、コードの書き方などに違いはあるが、
実現できるテキスト処理に大差はない」
或いは、共にテキスト処理を行うコマンドであるが、
ターゲットとしている、或いは得意としている処理内容に違いがあるのでしょうか?
awkとsedの両刀使いの方は、どのような基準で使い分けているのでしょうか?

(2)「高度なテキスト処理を行う」ツールとして、何か1つ習得したいと思っています。
Webの情報を見ていると、awk/sedの利用者は昔からのUNIX/Linuxユーザーが多く、
最近のユーザーはスクリプト言語(perl, ruby, python, ...)を使っているような印象を
受けました。
今から学ぶ場合、スクリプト言語を学ぶ方が活用シーン(Webアプリ開発など)も広がり、
おすすめでしょうか?

ご意見をお聞かせください。
よろしくお願いします。

A 回答 (3件)

(1) sed で出来ることは全部 awk で出来ますが、逆は出来ないことも多い。


sed で書くと簡単にできるのに、awk/Perl/Ruby等では長くなることもある。

sed にもホールドスペースというものがあって、単純な先頭行からの処理で無いことも出来ますが、考えるのが面倒なので、sed を使うのは単純なシーケンシャル処理だけの場合だけですね。
・単純な文字列置換
・n行目からn行目までを削除とか、取り出しとか
・特定の文字が出てくるまでを削除とか、取り出しとか

(2) テキスト処理で1つということだと、Perl か Ruby か二択でしょう。さらに、現時点では、これから学ぶ人がRubyでなくPerlを選ぶ理由は無いと思います。

あまり複雑な処理をしないのであれば、awkでも用足ります。言語機能が小さいので学びやすい。
(awkでは複雑な処理が出来ないと言うことでは無いです。テキスト処理ならほぼ何でも出来ますが、複雑な処理の場合は、Ruby等の方が言語機能が豊富なので書きやすいケースが多いということ)
    • good
    • 0
この回答へのお礼

私の疑問の全てに明確に答えていただきまして、ありがとうございます。

おかげさまで、awkとsedの違い、awk/sedの使い所についてイメージすることができました。
また、テキスト処理ツールについては、awk/sedは代表的な使い方を知り、Rubyは少し本格的に勉強していこうかと思いました。

お礼日時:2012/07/11 08:14

>「概念、シンタックス、コードの書き方などに違いはあるが、実現できるテキスト処理に大差はない」



かなり違うと思いますよ。
sedは、viで先頭行から順にコマンドだけで処理するようなものですし。

>awkとsedの両刀使いの方は、どのような基準で使い分けているのでしょうか?

perlやrubyも含めて、やりたい事を簡単にできるものを使ってます。

>今から学ぶ場合、スクリプト言語を学ぶ方が活用シーン(Webアプリ開発など)も広がり、おすすめでしょうか?

perl,ruby,pythonの中からお好みでいいのではないでしょうか。
1つしっかりと習得すれば他のスクリプト言語も割とすんなり使えるようになると思いますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>1つしっかりと習得すれば他のスクリプト言語も割とすんなり使えるようになると思いますよ。
こういったアドバイスをいただけて、とてもうれしいです。
Rubyに取り組んでみようかと思います。

お礼日時:2012/07/11 08:13

「awk と sed の両刀使い」ではありません (awk はあきらめて Perl に走ったので) が (1) だけ:


基本的に sed は「1行読み込みなんかしてから 1行出力」なので, このパターンに乗りそうなら sed.
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

sedのsはStream、またsedだけでは不十分なケースもあるので、awkやperlなどの他のツールも習得する必要があるということですね。

>awk はあきらめて Perl に走ったので
何故 awkをあきらめたのかがちょっと気になりました :)

お礼日時:2012/07/11 08:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!