dポイントプレゼントキャンペーン実施中!

仕事でときおりテキストファイルを加工することがあります。

最近awkを初めて使い簡単に処理できることが実感できました。

awkの本を探して調べていたら、「sed & awkプログラミング 改訂版」

を発見し、タイトルにsedとawkとあるので、"awkとsedはセット"なのかと

かんじました。

awkを勉強するならsedも一緒に覚えたほうがいいのでしょうか?

A 回答 (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をオプションを使って「ワンライナー」を目指してください。
    • good
    • 2

> awkを勉強するならsedも一緒に覚えたほうがいいのでしょうか?



そうですね、汎用さという観点では、以下の様な順になるかと思いますので。

シェル > grep, sed, awk > perl >> python > ruby

ただ、sedについて言えば、置換(sコマンド)だけ知っていれば十分のような気もします。

sedやawkを使いこなすには正規表現を極めることがとても重要なので、そちらについても
勉強されると良いかと思います。頑張ってください。
    • good
    • 1
この回答へのお礼

ありがとうございます。大変参考になります。

お礼日時:2012/08/22 23:54

両方共、テキスト処理を対象とするものですが、それぞれ、得手、不得手がありますから、両方、覚えておけば、レパートリーが広がっていいのではないでしょうか。



sed は、あくまで、行単位が処理ベースになりますので、それより、複雑な処理は、awkになるくらいがめやすですか。
 また、sedは、スクリプトを書くことは少なくて、多くの場合、コマンドライン中に記載するケースが多いように思います。
    • good
    • 0

Perl も「コマンドライン上からコマンドひとつで即興で作れる」んだけど....



もちろん Ruby も.
    • good
    • 1

昔よく使っていました。



awkでいろいろ加工し始めると、抽出された結果に対して更に何かを行うとか、抽出前のテキストをいじっておくとか、したくなります。
特に、awkはセパレータで区切られている事が肝なので、入力となるテキストをsedである程度加工してからawkに入れることが多いです。

#今はperlやrubyの方が使い出があるのかも知れませんね。
#私はsed&awkしか知らないので、今でもスクリプトを書くときはこれらを使います。

この回答への補足

>#今はperlやrubyの方が使い出があるのかも知れませんね。
perlはある程度使っているのですが、awkのほうがコマンドライン上からコマンドひとつで
即興で作れるので、スピードではawk > perlだとおもっているのですが。
いかがでしょうか。

補足日時:2012/08/21 23:35
    • good
    • 2

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