- ベストアンサー
awkとsedはセットで覚えたほうがいいですか?
仕事でときおりテキストファイルを加工することがあります。 最近awkを初めて使い簡単に処理できることが実感できました。 awkの本を探して調べていたら、「sed & awkプログラミング 改訂版」 を発見し、タイトルにsedとawkとあるので、"awkとsedはセット"なのかと かんじました。 awkを勉強するならsedも一緒に覚えたほうがいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
・いろんなテキストの変換作業のうち、半分位はsedでできます。 単純な比較、行の削除等はsedが簡単です。 テキストから数値を取りだし計算して、printf的な整形する、というのは苦手です。 最小構成のシステムの場合でも、sedが入ってない、ということは、まずありません。 ・perl -ne / perl -npe でsedできることのほとんどができます。in-placeはsedの方が楽です。 sedできないことの多くは,perlならできます。 perl -Mモジュール ~ とすると、かなり面倒な処理も、モジュールの機能を使って1行でできてしまう場合もあります。 昔は完全にオプションでしたが、現在ならほぼ標準で入っているでしょう。 ・awkはsedとperlの中間くらいです。 小さな構成でも、Perlに比べれば入っていることが多いです。 ということで。 ・Linux等のUNIX系OSを使うなら、sedは必須です。 ・awkは覚えておいて損は無いです。perlが使えない状況でも、awkなら使えることがあります。 ・perlをスクリプトでしか使っていないなんて、もったいないです。 -eをオプションを使って「ワンライナー」を目指してください。
その他の回答 (4)
- entree
- ベストアンサー率55% (405/735)
> awkを勉強するならsedも一緒に覚えたほうがいいのでしょうか? そうですね、汎用さという観点では、以下の様な順になるかと思いますので。 シェル > grep, sed, awk > perl >> python > ruby ただ、sedについて言えば、置換(sコマンド)だけ知っていれば十分のような気もします。 sedやawkを使いこなすには正規表現を極めることがとても重要なので、そちらについても 勉強されると良いかと思います。頑張ってください。
両方共、テキスト処理を対象とするものですが、それぞれ、得手、不得手がありますから、両方、覚えておけば、レパートリーが広がっていいのではないでしょうか。 sed は、あくまで、行単位が処理ベースになりますので、それより、複雑な処理は、awkになるくらいがめやすですか。 また、sedは、スクリプトを書くことは少なくて、多くの場合、コマンドライン中に記載するケースが多いように思います。
- Tacosan
- ベストアンサー率23% (3656/15482)
Perl も「コマンドライン上からコマンドひとつで即興で作れる」んだけど.... もちろん Ruby も.
- kekyo0
- ベストアンサー率62% (5/8)
昔よく使っていました。 awkでいろいろ加工し始めると、抽出された結果に対して更に何かを行うとか、抽出前のテキストをいじっておくとか、したくなります。 特に、awkはセパレータで区切られている事が肝なので、入力となるテキストをsedである程度加工してからawkに入れることが多いです。 #今はperlやrubyの方が使い出があるのかも知れませんね。 #私はsed&awkしか知らないので、今でもスクリプトを書くときはこれらを使います。
補足
>#今はperlやrubyの方が使い出があるのかも知れませんね。 perlはある程度使っているのですが、awkのほうがコマンドライン上からコマンドひとつで 即興で作れるので、スピードではawk > perlだとおもっているのですが。 いかがでしょうか。
お礼
ありがとうございます。大変参考になります。