939です。
報告が遅れてすみません。
ベクターから落とした gawk 3.1.5 for Windows
です。
939です。
osはwin2000です。
>>933 おまい、ドキュメントに目を通してるか?
内部的な話になりますが、マルチバイト文字はワイドキャラクタに変換して
から処理されています。このため、正規表現で[亜-熙]のように漢字の範囲指
定を行っても期待通りの動作はしません。
とあるぞ。
>>945 939です。
ということは、JGAWKをdosプロンプトで動かすというのが
簡明な方法でしょうか?
>>946 32bit版Windows用のjgawkってのはないので、cmd.exeのコンソールから起動しても
自動的にcommand.comが立ち上がるってのを我慢できるのなら、
それでいいんじゃないか?
ところで[一-九]って正規表現なんだが、これって漢数字の一から九を引っ掛けたいの?
一 88EA
二 93F1
三 8E4F
四 8E6C
五 8CDC
六 985A
七 8EB5
八 94AA
九 8BE3
なんで、範囲指定に納まってないやつがあるんだが。
わろす
一-九程度なら[一二三四五六七八九]にすればいいんじゃね?
947さんありがとうございます。
949さん 参考になります。
しかし、winで動かすというのもしんどいですね。
winに限らないだろ
っていうか数年前のレスでみたデジャヴ?
ところで今インターネット上で手に入るawkの実装ってどのくらいあるんだろ?
awk '/ぬるぽ/{print "ガッ"}'
>>952 多分両手の指で数えても指のほうが余るくらいだろう。
gawk, mawk, one true awk, QTawk, Open Solarisのawk
あとまだあったかな?
でもまあそんなにawkはないな
>>956 あほか。
わからんこと
かきやがって。
つーかawkのkの人は未だにawk公開してんだな
本人作のawkの最終更新がApril 24, 2005ってのが驚きだ
>959
Aはエじゃないのか?
英語だとエイホだけど本人の出身地的にはアーホらしい。
というかそこまで考えずローマ字で考えてたんだが。
962 :
957: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
965 :
964:2007/02/18(日) 19:25:20
BEGINがおかしい・・・
訂正
BEGIN { hoge = sprintf("%s%s","abc",ARGV[1]); ARGV[1]="" }
>>963 パラメータは同じで:
$1 ~ "^abc"sh{
print $0
}
* シングルクォートは、awk では引用符として使えない
* 文字列連結は定数・変数を順にならべるだけ
ようするに、 引数ってのは原則としてファイル名として取り扱われるわけで。
"var=ファイル名"みたいな形もとれるが、
プログラム中でvarがファイルとして読み込まれる場合にのみ正常に動作する。
ファイルとして取り扱われたくなければBEGIN中でARGVを利用し、
ファイル名として扱われるのを防ぐために ARGV[1] = "" などとしておく。
俺はしばらくAwkいじってなかったから腕がナマクラになってるな・・・
BEGINのところは
BEGIN { x = "^abc" ARGV[1]; ARGV[1]="" }
と、シンプルに書くべき。
俺は何で無理にsprintf()なんて使ったんだろう・・・
>>966 今のAWKは引数がファイル名扱いにならんのか・・・
俺もロートルだな。
969 :
デフォルトの名無しさん:2007/02/18(日) 22:17:34
awkってどうしてこんなに流行らないの?
Perlより機能は少ないけどテキスト処理に関しては必要充分でしょ。
もう少し見直されてもいいような気がするんだけど。
最近はスクリプト言語でもオブジェクト指向が常識になってるけど、
ごく小規模のスクリプト組むのに、クラスがどうとか継承がどうとか考えるのは時間の無駄だし。
本当に本当のエンドユーザー向け言語としてはawkみたいなシンプルな言語は最適だと思うんだけど。
PC98でPerlが重すぎたころはawkのほうがメジャーだったな
awkが流行らない理由。
・使える人は1行野郎なりその手のものをその場で作ってその場で捨てるから資料が充実しない。
・使えない人は既にあるものを探そうとするからawkを覚えるよりはPerl(など)のスクリプトを探す方を善しとする。
Excelみたいなスプレッドシートは行数制限があるから、ちょっとしたデータ解析にはawkは重宝するんだけどね。
Perlのほうが実装が優秀だからだよ。
awkをPerlに変換しただけで断然速くなる。
90年代前半にいたawk使いがあっと言う間にPerlに乗り換えていった。
「プログラミング作法」の比較ベンチでも完敗してたし、
Rob Pikeもshは過去の栄光だと言ってる。
Perlはawkのアンチテーゼとして産まれたから。
優秀なことが求められている項目については、
全て勝っていると思うけど。
自分はawkの方が好きなんだけどね。
実装方式の影響がでかいからなんとも言えんよ。
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とかなでしこのようなフリーの安直な言語使ってる。
会社には一応情報の専門職もいるんだが、
簡単な事は全部自分達でやっちゃうから、彼らの立場がなくなってる。
そう考えると、エンドユーザーズ言語(簡易言語)を広めれば
企業にとっては無駄な情報屋を雇わなくて済むから得になるわけだ。
目的が特化され機能が絞られており、非オブジェクト指向で、
なおかつ日常でよくやるような作業が簡単にできる言語には大いに存在価値がある。
素人をプログラミングから遠ざけ、情報屋が仕事に困らなくなるような言語ばかりが世にはびこるのは良くないことだ。
979 :
デフォルトの名無しさん:2007/02/22(木) 21:55:23
>>976 ムカツクこと言ってくれるねぇ。
本当の事を露骨に言うなよ。
オークって読むんだね。
awk95.exeをつかってる(シフトJISに対応してない)
カーニハンはオークって読むなといっていたような・・・
983 :
デフォルトの名無しさん:2007/02/23(金) 19:09:37
http://ja.wikipedia.org/wiki/AWK AWK の発音は "オーク" であるが、
これは日本語話者にとって不自然であるため、
“エー・ダブリュー・ケー”と発音する人がいる。
しかし AWK の教典こと『プログラミング言語AWK』の日本語版の序文では
制作者の一人であるブライアン・カーニハンは
決してそのような発音をしてはならないと主張している記載がある。
なお、この本の表紙に書かれているのは
オオウミガラス(GREAT AUK)でありその主張の強調でもある。
そろそろ次スレが欲しいな。
作者はオークと読んで欲しくないけど、
使ってる人はオークと読んでいる。
新スレキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>>986 「エーダブリューケー」と読むなという主張。
awkは語るまい。
オークでだめならawkのaだけを取ってアホでいいか?
カーニハンがダメだというのならkだけ取ってawでいいよaw
語尾につけるとかこいいよawwww
だからなんで逆に解釈するんだよ〜(TT