• ベストアンサー

プログラミング言語AWKについて

現在大学生ですがゼミ(ネットワークのゼミ)の先生の指導のもとAWKを勉強することになりました。理由はそんなにむずかしくないから、短い期間にはちゅうど良いということなのですが。実際はどういうところで使われているのでしょうか??また、勉強する価値はどんな程度でしょうか??僕は学生のうちはどんなプログラムでも勉強するのは悪くないとおもっているので頑張るつもりですが。どうも聞いたことの無いプログラムなもので気になりました。詳しい方もしくはAWKを極めている方、ぜひ教えてください。ちなみに私は一応大学でC言語とJAVAをかじっていますが、こんな私にとって難易度はどんなものでしょうか??Cをしっていたら結構簡単と教科書にはかいてあるのですが・・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • Blogger
  • ベストアンサー率66% (4/6)
回答No.3

AWKは、特に文字列処理を簡単に行うには最適な言語だと思います。数千行や数 万行のプログラムには向いていないのではないかと思いますが、数行でちょっと したテキスト処理(条件抽出や置換)、統計処理などをバッチ処理したい場合な どに、AWKが使えると大幅に時間短縮になります。 個人的に使っていて思うのは、テキスト処理用ツールとしては、 ・難易度及び高機能度 Perl > AWK > grepツール みたいな感じがあり、本格的なプログラミング言語としては、Perlには劣るけれ どもgrepよりはずっと高度なことができる、と思います。(まあ、grepは言語で はないですが...)。 でも、AWKでWebサーバをプログラミングしちゃった人もいるみたいで、 ・AWKhttpd - HTTPD written in AWK http://awk.geht.net:81/README.html やろうとおもえば、いろいろと高度なプログラミングもできます。あとは、 ・Effective AWK Programming(邦訳) http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_toc.html ここに入門ガイドがあります。 知っていれば、ちょっとした処理で人に差をつけられるかも、という意味で、 AWK学習おすすめです。多くのUNIXシステムに搭載されていると思いますし、知っ ていれば使う場面は結構あるとおもいますよ。難易度は、CやJAVAより遥かに簡単です。

その他の回答 (5)

  • yfujii
  • ベストアンサー率17% (14/80)
回答No.6

c言語と比較してawk(nawk)を使用した特徴を申し上げます。 テキスト処理用としては大変強力です。プログラムはc言語の100倍位短時 間で作成できます。 テキスト処理では、比較、検索、置換、分割、ファイルの読み書き等が主な処 理となりますが 1.正規表現での比較、マッチングができるので比較、検索、置換が超簡単。   また好きな文字でレコードをフィールドに簡単に分割できます。   たとえば文の1行を空白で区切られた文字列に分解する処理はc言語では   少し、考えて作成する必要がありますが、awkではなにも考えなくても勝   手にやってくれます。1行読み込んだ時点で$1~$NFに入っているので   考慮時間0秒です 2.検索は連想配列が使用できるので超楽   連想配列とはc言語の配列のインデックスに文字列が使えるのです。   辞書を考えてみると分かりますが、配列のなかの文字列を検索するのはか   なり面倒ですがawkではtel["NTT"]="03-0000-1111";tel["kdd"]="03-222 -3333"と入れておけば、 s="NTT";print tel[s] のような形で利用できるのです   これをc言語でやるとやはり色々考えなくてはなりません。 3.テキストファイルの入出力も大小記号1つなので楽です 4.変数型は数値と文字しかありませんがこの変換も大変簡単です。ほとんど   考える必要は無い位で勝手にやってくれます 逆に低レベルの制御には使用できません。利用方面を考えて使えば便利なので ぜひ、学んでみてください。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.5

Cを知っているのであれば、1~2日もあれば、そこそこ使えるようになります。 awk 自体は文法や用意されている関数は簡単なのですが、正規表現が、そこそこ 奥が深いので、それなりに使いこなすように成るには、もうちょっとかかるかな。 で、使っているうちに No.4 の回答にある mide> ・テキストファイルで、行単位で考えることを基本にしてください。 を感覚としてつかむと、世界が広がります(というか、awk が得意な処理を 簡単に書けるようになる)。 蛇足を承知で、C のプログラムと対比させてみると、以下のような感じになります。 ■ C だと int main() {   ファイルを開く前にする処理   in = fopen(対象ファイル, "r");   while (fgets(buf, sizeof(buf), in) != NULL) {     if (条件1) {       行が条件1を満たすときの処理     } else if (条件2) {       行が条件2を満たすときの処理     }     全ての行に対する処理   }   ファイルを読みおわってからする処理   return 0; } ■ awk だと BEGIN {   ファイルを開く前にする処理 } 条件1 {   行が条件1を満たすときの処理 } 条件2 {   行が条件2を満たすときの処理 } {   全ての行に対する処理 } END {   ファイルを読みおわってからする処理 }

  • mide
  • ベストアンサー率44% (333/745)
回答No.4

awkはとても便利なツールで、よく grep, sed などと組み合わせて使います。 大事なところはすでに皆さんが書いていらっしゃるので、ちょっとしたコツだけ: ・テキストファイルで、行単位で考えることを基本にしてください。 ・複雑なプログラムももちろん書けますが、それよりは単純な操作をするプログラムをパイプでどんどんつないでいった方が楽なことが多いし、中間結果を見ることができるので便利です。たとえば、 cat 元ファイル | awk ... | grep ... | sed ... | awk ... | awk ... > 結果ファイル という感じです。もちろん、それぞれのコマンドの中身を別ファイルにするなり、スクリプトにしても結構。最後に結果ファイルに出力する代わりに、何らかのコマンドに入力として食わせることもできます。そのままメールしたりとかね。 ちょっと慣れれば、このような形でのファイル処理の柔軟性の高さに、きっと驚かれることでしょう…。

  • quenista
  • ベストアンサー率28% (122/425)
回答No.2

>実際はどういうところで使われているのでしょうか?? Unix系OSで、ファイルの変換なんかに使っています。 >どうも聞いたことの無いプログラムなもので気になりました。 プログラムと言うより、スクリプト言語と言う感じですね。 perlに近い感じだと思って頂ければ、感覚的に掴み易いと思います。 >詳しい方もしくはAWKを極めている方 全然、極めてません。 時々、ファイルコンバートに使う程度です。 >難易度はどんなものでしょうか?? Javaが理解出来ていれば、そんなに難しく無いと思いますよ。 これは、どの言語でも言える事ですが、考え方さえしっかりしてれば、言語は表記方法の問題だと思います。 頑張って、勉強して見て下さい。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

手軽なテキスト処理用の言語という感じでしょうか。 perlの先祖みたいなものでperlが機能的にsh+sed+awkになってます。 perl程複雑な多彩なことはできませんが、構文がC言語に近いので、簡単なテキスト処理をさせるのには 手頃と思います。 また、テキスト処理に関して言えば,Cで書くと面倒なことも簡単にできたりします。 CやJAVAだと馴染みがないのは、正規表現と連想記憶配列あたりでしょうか。 これは、perlでも同じ機能がありますが。 あとは、楽勝でしょう。 実際どこで使われているかというと,あまり外には見えない分野でしょうか(^^; ユーザーがちょっとしたテキスト処理の小物をプログラムを作って使うという感じでしょうね。 もともと大きなプログラムを書くための物ではないですし、 awkからperlへのトランスレーターもありますし、perl使えば済むともいえますので,目立ったところでは使わないのかも。 個人的にはよく使いますが。 perlはまだ覚えてませんし(^^;;;

関連するQ&A

  • プログラミング言語の質問です

    プログラミング言語の質問です プログラミング言語を今から勉強しようと思います。 そこで、オブジェクト指向の言語として(というより、今の社会で役立つ言語として)習うべきなのはどの言語でしょうか? 私は候補として、javaとC++を知っていますが、どう違うのかは分かりません。 どちらもCからの派生みたいなことは知っています。 そこで、javaとC++を比較して (1)どう違うのでしょうか?(できることの違い) (2)どちらの方がより優れていると思いますか? 今のところjavaとC++を考えていますが、他の言語の方が良いなら教えてください。 その他、プログラミング言語に関して知っておいたほうが良いことがあれば、 ぜひ教えてください。 回答よろしくお願いします。

  • プログラミング言語の質問です。

    プログラミング言語の質問です。 プログラミング言語を今から勉強しようと思います。 そこで、オブジェクト指向の言語として(というより、今の社会で役立つ言語として)習うべきなのはどの言語でしょうか? 私は候補として、javaとC++を知っていますが、どう違うのかは分かりません。 どちらもCからの派生みたいなことは知っています。 そこで、javaとC++を比較して (1)どう違うのでしょうか?(できることの違い) (2)どちらの方がより優れていると思いますか? 今のところjavaとC++を考えていますが、他の言語の方が良いなら教えてください。 その他、プログラミング言語に関して知っておいたほうが良いことがあれば、 ぜひ教えてください。 回答よろしくお願いします。

  • プログラミングをするならどの言語

    こんにちは宜しくお願いします。 40歳近い私は、BASIC等でプログラムを組んだ世代ですが 最近新しいプログラミング言語を覚えようと思っております。 用途にもよると思いますが、お勧めのプログラミング言語が ありましたら、教えてください。 自分では、JAVAとかC++とかなのかなと思っています よろしくお願いします

  • プログラミング言語の習得について

    プログラミング言語の習得について こんにちは。某大学の理工学部数学科に通う4年生です。 プログラミング言語について質問させていただきます。 僕は先日基本情報技術者試験を受験しました。 その試験ではプログラミング言語を1つ習得しないといけなかったためC言語の入門書を一冊勉強しました。 今家にはC++とJavaの入門書、C言語の中級書もあります。 そこで質問なのですが、 続けてプログラミング言語を勉強するには、C言語の中級書、上級書というように1つの言語を徹底的にマスターした方がいいですか? それとも、C++、Javaの入門書を一通りやってC以外の言語も一応使えるようにした方がいいですか? ちなみに大学院に進学する予定なのでまだまだ勉強できる環境にあります。 宜しくお願いします。

  • プログラミング言語

     プログラムの言語にはそれぞれ得意分野があるようなのですが、例えば家庭用のゲーム等は、何の言語を使って製作しているのですか?特に決まっていないのでしょうか。。。いや、気になっただけなんですけど。PC上のアプリケーションは、javaやC++などでしょうけれど。。。どなたか各言語の実用的な使い道を説明してくださる方、この初心者めに是非ともご教授くださいませ。よろしくお願いします。

  • 新言語プログラミング2005?

    以前にC/C++言語・Javaプログラミングを勉強したことがあるのですが、今は違う業界にいて、最近では何のプログラミングが最新なのか分かりません。 「これから」という新言語プログラミングを、誰か知っていたら教えてください。 ちなみに、C言語とJavaの検定・2級を持ってます。

  • プログラミング言語についてです。

    私はプログラミング言語を勉強しようとしていますが、cかjavaをしようとしてます。 最終的にはどちらもできるよう努力しますが、どちらからしたらいいのでしょうか? それと、cとjavaって似たようなとこってありますか? 教えてください。

  • プログラミング言語について

    プログラムを学ぼうと思っている初心者です。 C、Java、COBOL…色々なプログラミング言語がありますが、それぞれどのような物を作るときに使用されるのでしょうか?今いちばん需要があるのものと難易度も知りたいです。わかりやすく教えていただけるとありがたいです。

  • プログラミング言語ってどうしてこんなに多いの?

    会社に新入社員が実習で入ってきました。気さくな20歳の女の子ですが、C言語とかを使ってプログラムは組めるそうです。パソコン歴は長いのですが、BASIC言語で組んだ頃で終わりです。 なにかすっごく嫉妬を感じたのですが、どうしてこんなに言語が存在するのでしょうか?。言語の特性とできましたら、習熟の難易度などをかかれていただくと助かります。また、今もっとも注目を浴びている言語がありましたら、参考までにお願いします。

  • プログラミング言語、何をしてよいやら...

    余りにも雲をつかむような質問ですみません。 最近、プログラム言語を勉強したいと思うのですが、何の言語を勉強すれば良いのか迷ってます。 Java、PHP、Peal、VB....いろいろ有り過ぎて。 それぞれに良い所が有るし、悪い部分もあるだろうし...。 無難なところでVisualBasicでもいいかな~と漠然と考えてます。 「何をしたい(作りたい)のかで、違います」と言う様な答えになってしまいますでしょうか? 昔(10年以上前ですが)BASICでゲーム作った程度の私にオススメの言語を教えてください。

専門家に質問してみよう