awkについて語るスレ

このエントリーをはてなブックマークに追加
943デフォルトの名無しさん:2007/01/18(木) 23:42:50
939です。
報告が遅れてすみません。
ベクターから落とした gawk 3.1.5 for Windows
です。

944デフォルトの名無しさん:2007/01/18(木) 23:43:42
939です。
osはwin2000です。
945デフォルトの名無しさん:2007/01/19(金) 02:33:13
>>933
おまい、ドキュメントに目を通してるか?

内部的な話になりますが、マルチバイト文字はワイドキャラクタに変換して
から処理されています。このため、正規表現で[亜-熙]のように漢字の範囲指
定を行っても期待通りの動作はしません。

とあるぞ。
946デフォルトの名無しさん:2007/01/19(金) 22:30:02
>>945
939です。
ということは、JGAWKをdosプロンプトで動かすというのが
簡明な方法でしょうか?
947デフォルトの名無しさん:2007/01/20(土) 03:44:03
>>946
32bit版Windows用のjgawkってのはないので、cmd.exeのコンソールから起動しても
自動的にcommand.comが立ち上がるってのを我慢できるのなら、
それでいいんじゃないか?

ところで[一-九]って正規表現なんだが、これって漢数字の一から九を引っ掛けたいの?

一 88EA
二 93F1
三 8E4F
四 8E6C
五 8CDC
六 985A 
七 8EB5
八 94AA
九 8BE3

なんで、範囲指定に納まってないやつがあるんだが。

948デフォルトの名無しさん:2007/01/20(土) 07:27:57
わろす
949デフォルトの名無しさん:2007/01/20(土) 16:31:53
一-九程度なら[一二三四五六七八九]にすればいいんじゃね?
950デフォルトの名無しさん:2007/01/20(土) 20:46:47
947さんありがとうございます。
949さん  参考になります。
しかし、winで動かすというのもしんどいですね。
951デフォルトの名無しさん:2007/01/20(土) 22:09:48
winに限らないだろ

っていうか数年前のレスでみたデジャヴ?
952デフォルトの名無しさん:2007/01/24(水) 15:43:28
ところで今インターネット上で手に入るawkの実装ってどのくらいあるんだろ?
953デフォルトの名無しさん:2007/01/26(金) 02:15:13
awk '/ぬるぽ/{print "ガッ"}'
954デフォルトの名無しさん:2007/01/27(土) 02:36:41
>>952
多分両手の指で数えても指のほうが余るくらいだろう。

gawk, mawk, one true awk, QTawk, Open Solarisのawk

あとまだあったかな?
955デフォルトの名無しさん:2007/01/27(土) 12:51:20
http://busybox.net にも awk 実装されているよ
956デフォルトの名無しさん:2007/01/27(土) 18:53:51
でもまあそんなにawkはないな
957デフォルトの名無しさん:2007/01/27(土) 18:55:59
>>956
あほか。
わからんこと
かきやがって。
958デフォルトの名無しさん:2007/01/27(土) 22:13:46
つーかawkのkの人は未だにawk公開してんだな
本人作のawkの最終更新がApril 24, 2005ってのが驚きだ
959デフォルトの名無しさん:2007/01/27(土) 22:14:12
>>957
縦読みか。
960デフォルトの名無しさん:2007/01/27(土) 22:45:14
>959
Aはエじゃないのか?
961デフォルトの名無しさん:2007/01/27(土) 23:07:14
英語だとエイホだけど本人の出身地的にはアーホらしい。

というかそこまで考えずローマ字で考えてたんだが。
962957:2007/01/28(日) 00:02:23
ローマ字入力派なもんで。
963デフォルトの名無しさん:2007/02/18(日) 17:07:04
最近awkを使い始めた者ですが
正規表現に引数を使うときの書き方が分かりません

hoge.awkに100を渡して

gawk -v sh=100 hoge.awk abc.txt > def.txt

第1フィールドの初めが"abc100"だったら
っていうのがしたいのですが

if ($1 ~ ^/abc'{sh}'/)

これが動きませぬ

どなたかご教授ください
964デフォルトの名無しさん:2007/02/18(日) 19:23:59
>>963

$ cat moe
abc100nyoronyoro
hoge
moemoe

$ cat hoge.awk
BEGIN { hoge = sprintf("%s%s","m",ARGV[1]); ARGV[1]="" }
$0 ~ hoge { print }

$ awk -f hoge.awk 100 moe
abc100nyoronyoro
965964:2007/02/18(日) 19:25:20
BEGINがおかしい・・・
訂正

BEGIN { hoge = sprintf("%s%s","abc",ARGV[1]); ARGV[1]="" }
966デフォルトの名無しさん:2007/02/18(日) 19:31:43
>>963

パラメータは同じで:

$1 ~ "^abc"sh{
    print $0
}

* シングルクォートは、awk では引用符として使えない
* 文字列連結は定数・変数を順にならべるだけ
967デフォルトの名無しさん:2007/02/18(日) 19:35:42
ようするに、 引数ってのは原則としてファイル名として取り扱われるわけで。
"var=ファイル名"みたいな形もとれるが、
プログラム中でvarがファイルとして読み込まれる場合にのみ正常に動作する。

ファイルとして取り扱われたくなければBEGIN中でARGVを利用し、
ファイル名として扱われるのを防ぐために ARGV[1] = "" などとしておく。

俺はしばらくAwkいじってなかったから腕がナマクラになってるな・・・
BEGINのところは
BEGIN { x = "^abc" ARGV[1]; ARGV[1]="" }
と、シンプルに書くべき。
俺は何で無理にsprintf()なんて使ったんだろう・・・
968デフォルトの名無しさん:2007/02/18(日) 19:45:03
>>966
今のAWKは引数がファイル名扱いにならんのか・・・
俺もロートルだな。
969デフォルトの名無しさん:2007/02/18(日) 22:17:34
awkってどうしてこんなに流行らないの?
Perlより機能は少ないけどテキスト処理に関しては必要充分でしょ。
もう少し見直されてもいいような気がするんだけど。

最近はスクリプト言語でもオブジェクト指向が常識になってるけど、
ごく小規模のスクリプト組むのに、クラスがどうとか継承がどうとか考えるのは時間の無駄だし。
本当に本当のエンドユーザー向け言語としてはawkみたいなシンプルな言語は最適だと思うんだけど。
970デフォルトの名無しさん:2007/02/18(日) 22:36:57
PC98でPerlが重すぎたころはawkのほうがメジャーだったな
971デフォルトの名無しさん:2007/02/18(日) 23:24:45
awkが流行らない理由。
・使える人は1行野郎なりその手のものをその場で作ってその場で捨てるから資料が充実しない。
・使えない人は既にあるものを探そうとするからawkを覚えるよりはPerl(など)のスクリプトを探す方を善しとする。

Excelみたいなスプレッドシートは行数制限があるから、ちょっとしたデータ解析にはawkは重宝するんだけどね。
972デフォルトの名無しさん:2007/02/19(月) 01:51:57
Perlのほうが実装が優秀だからだよ。
awkをPerlに変換しただけで断然速くなる。
90年代前半にいたawk使いがあっと言う間にPerlに乗り換えていった。
「プログラミング作法」の比較ベンチでも完敗してたし、
Rob Pikeもshは過去の栄光だと言ってる。
973デフォルトの名無しさん:2007/02/19(月) 02:10:41
Perlはawkのアンチテーゼとして産まれたから。
優秀なことが求められている項目については、
全て勝っていると思うけど。
自分はawkの方が好きなんだけどね。
974デフォルトの名無しさん:2007/02/19(月) 02:15:12
実装方式の影響がでかいからなんとも言えんよ。
POSIX-awkだと枝狩りがないから正規表現のコストが高い場合があるし、
逆に遅延評価DFAが有効に機能する場面なればawkの圧勝だろう。
975デフォルトの名無しさん:2007/02/20(火) 00:24:27
awkでurlデコードする関数作ったんだけど
こういうライブラリもうある?
976デフォルトの名無しさん:2007/02/21(水) 22:36:09
うちの職場だと普通の事務屋や技能職が
日常の雑事をbashとかawkなんかで済ませてるけどな。
GUIが必要ならVB使ったり、
HSPとかなでしこのようなフリーの安直な言語使ってる。

会社には一応情報の専門職もいるんだが、
簡単な事は全部自分達でやっちゃうから、彼らの立場がなくなってる。

そう考えると、エンドユーザーズ言語(簡易言語)を広めれば
企業にとっては無駄な情報屋を雇わなくて済むから得になるわけだ。
目的が特化され機能が絞られており、非オブジェクト指向で、
なおかつ日常でよくやるような作業が簡単にできる言語には大いに存在価値がある。
素人をプログラミングから遠ざけ、情報屋が仕事に困らなくなるような言語ばかりが世にはびこるのは良くないことだ。
977デフォルトの名無しさん:2007/02/21(水) 22:55:40
978デフォルトの名無しさん:2007/02/22(木) 20:04:25
>>977
AWKでCGI
http://pc10.2ch.net/test/read.cgi/php/1171804314/
で紹介されてる
http://www.gnu.org/software/gawk/manual/gawkinet/gawkinet.html
を見てしまった。 gawk でsocketが使えるのね。知らんかった。
試しに、
gawk 'BEGIN { "/inet/tcp/0/192.168.0.99/110" |& getline; print $0; close("/inet/tcp/0/192.168.0.99/110") }'
とやったら、レスポンスが返ってきた。
誰か、SMTP でとやり取りするスクリプト作ってくれないかな。メールの中味(ヘッダも含む)
に対して gawk でごにょごにょやりたい。
979デフォルトの名無しさん:2007/02/22(木) 21:55:23
>>976
ムカツクこと言ってくれるねぇ。
本当の事を露骨に言うなよ。
980デフォルトの名無しさん:2007/02/22(木) 22:58:16
オークって読むんだね。
981デフォルトの名無しさん:2007/02/22(木) 23:17:20
awk95.exeをつかってる(シフトJISに対応してない)
982デフォルトの名無しさん:2007/02/23(金) 12:11:36
カーニハンはオークって読むなといっていたような・・・
983デフォルトの名無しさん:2007/02/23(金) 19:09:37
http://ja.wikipedia.org/wiki/AWK

AWK の発音は "オーク" であるが、
これは日本語話者にとって不自然であるため、
“エー・ダブリュー・ケー”と発音する人がいる。
しかし AWK の教典こと『プログラミング言語AWK』の日本語版の序文では
制作者の一人であるブライアン・カーニハンは
決してそのような発音をしてはならないと主張している記載がある。
なお、この本の表紙に書かれているのは
オオウミガラス(GREAT AUK)でありその主張の強調でもある。
984デフォルトの名無しさん:2007/02/23(金) 23:05:58
そろそろ次スレが欲しいな。
985デフォルトの名無しさん:2007/02/23(金) 23:56:41
986デフォルトの名無しさん:2007/02/24(土) 00:22:18
作者はオークと読んで欲しくないけど、
使ってる人はオークと読んでいる。
987デフォルトの名無しさん:2007/02/24(土) 00:33:34
新スレキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
988一応釣られておく:2007/02/24(土) 05:36:22
>>986
「エーダブリューケー」と読むなという主張。
989デフォルトの名無しさん:2007/02/24(土) 07:39:33
awkは語るまい。
990デフォルトの名無しさん:2007/02/24(土) 14:19:23
オークでだめならawkのaだけを取ってアホでいいか?
991デフォルトの名無しさん:2007/02/24(土) 14:57:14
カーニハンがダメだというのならkだけ取ってawでいいよaw
語尾につけるとかこいいよawwww
992一応釣られておく
だからなんで逆に解釈するんだよ〜(TT