[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/01 08:48 / Filesize : 292 KB / Number-of Response : 1034
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

awkについて語るスレ $2



1 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 23:55:42 .net]
腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ

◆ 前スレ
awkについて語るスレ
pc10.2ch.net/test/read.cgi/tech/1023556171/

◆ 関係スレ
シェルスクリプト相談室
pc10.2ch.net/test/read.cgi/tech/1112553783/
AWKでCGI
pc10.2ch.net/test/read.cgi/php/1171804314/
【sed】シェルスクリプト総合@LINUX Part2【awk】
pc10.2ch.net/test/read.cgi/linux/1154578200/

◆ 参考
The AWK Programming Language (Brian Kernighan):
ttp://cm.bell-labs.com/cm/cs/awkbook/index.html

GAWK (GNU Projedt):
ttp://www.gnu.org/software/gawk/

592 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 21:19:09.46 .net]
>>581
あう、そうなのかー。ありがとうございます。困ったなぁ。
10進で実数扱えとまでは言わないけど、整数は欲しい。
数をいろんな型で扱える処理系なんてないか。

593 名前:デフォルトの名無しさん mailto:sage [2011/05/07(土) 23:01:38.63 .net]
>>583
あー、long doubleと言ったのが拙かったね。10の冪の場合は実質doubleを大きく越えた精度になっていると言いたかった。

10は2と5の積だから、10倍を繰り返すときに仮数部は5倍ずつにしかならない。
IEEEのdoubleの精度だと5の22乗で53ビットを使い果たすので、そこまでは誤差が生じない。
言い換えれば、10の場合は53ビット+22ビット、即ち75ビット分精度があるように見える。

まぁ、>584を10倍じゃなくて5倍にして、doubleをlong longにして%.fを%llxにしてビット数を数えてみればわかるでしょ。

594 名前:デフォルトの名無しさん mailto:sage [2011/05/09(月) 21:13:05.37 .net]
gawkのユーザガイドに、他の処理系では、標準エラーを使うため、
 print "Serious error detected!" | "cat 1>&2"
という方法しかないとあります。
gawkは/dev/stderrを特別に扱うため、
 print "Serious error detected!" > "/dev/stderr"
と書くのが適切とあります。

これには、どのような違いがあるのでしょうか?
/dev/stderrがあるOSなら、catのプロセスが生成される他は、違いはないのでしょうか?
環境や処理系を問わず動作させたいなら、上の書き方の方がよいのか、気になっています。

よろしくお願いします。

595 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 00:17:11.81 .net]
他の処理系って、他のawkって事だよ。

/dev/stderrがあるOSって事ぢゃなくて、
gawkは特殊なファイル名として/dev/stderrとか使えるよ、って事だよ。

なので他のOSでも gawk だったらprintとかの出力先ファイル名として /dev/stderr 使えるって話だね。
/dev/stderrとかをサポートしていないgawk以外のawkでも動作させるなら パイプと"cat 1>&2"を使う方法しかない。が、Win系はcatだと...

596 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 09:20:21.36 .net]
そこまでのことをするならPerl/Ruby/Python等のちゃんとした
スクリプト言語で書いた方がいいんじゃないかな。こういう
どうでもいいところで悩まなくて済むよ。

awkはawkで手軽に書ける範囲なら他の追随を許さないと思うが
その枠をはみ出ようとすると途端に大変になる。そこが楽しいと
いうのなら無理には止めないけどw



597 名前:デフォルトの名無しさん mailto:sage [2011/05/10(火) 14:35:51.09 .net]
>>589
そう、それが楽しいんだ

598 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 00:36:20.77 .net]
>>588
ありがとうございます。
catがない環境だと、どうしようもないですね…

>>589
コンマ区切りのデータを、シェルスクリプトで処理していたので、
それをawkに移植していました。一番手軽だったのです。

ちなみに、2時間半以上かかっていた処理が、1分以内に短縮されました。
ワラタ。   ワラタ…

599 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 10:19:43.16 .net]
Cで書き直したら数秒で実行完了の予感w

600 名前:デフォルトの名無しさん mailto:sage [2011/05/11(水) 12:14:45.46 .net]
つーてもawkとかその他のスクリプトでサクッと書けるような文字列処理を
C言語とかではあんまり書きたくならんと思うぞw



601 名前:デフォルトの名無しさん mailto:sage [2011/05/24(火) 10:19:27.54 .net]
なりません

602 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 20:17:22.02 .net]
あぁああぁぁぁ〜〜〜無理だったか、、無理なのかー!a[0][0] = 1 → syntax error

603 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 21:58:46.38 .net]
>>595
gawkの場合インデックスをSUBSEP(=\034がデフォルト)を挟んでシリアライズしたインデックスで多次元配列を表現する
a[0,0] = 1;
ならOKのはず。このときのインデックスは"0\0340"だから、a["0\0340"] == 1。

604 名前:デフォルトの名無しさん mailto:sage [2011/05/26(木) 18:46:04.99 .net]
>>596
ありがとう。始めからそれを意識して書いてたらよかったんだけどね。

god["name"] = "Kaname Madoka"
god["msg"] = "Mahoushoujo ha watashi dakede juubun dayo."
homerun["name"] = "Akemi Homura"
homerun["msg"] = "Madoka ha watashi no yome."
こんな風に書いていたのを、

puella_magi["god"] = god
puella_magi["homerun"] = homerun
みたいにまとめようとしたら、あばばばば

awkの配列って処理系によっては添え字が整数の場合、処理が最適化されて早くなったりするのかな?
構造体の代わりみたいに使いたかったのだが。

605 名前:デフォルトの名無しさん mailto:sage [2011/05/27(金) 00:57:28.69 .net]
name["god"] = "Kaname Madoka"
msg["god"] = "Mahoushoujo ha watashi dakede juubun dayo."
name["homerun"] = "Akemi Homura"
msg["homerun"] = "Madoka ha watashi no yome."

でよくね?

606 名前:デフォルトの名無しさん mailto:sage [2011/05/30(月) 21:25:51.88 .net]
awkって *どの実装でも* 一度も使ったことがない変数の内容って、スカラなら0か""になってるの?
変数が一度も代入されていないことを判定するために、(x==0 && x=="")って書いて何か問題ない?

607 名前:デフォルトの名無しさん mailto:sage [2011/05/30(月) 21:31:52.21 .net]
>>599
評価されるときに変数が存在しなければ作成される。はず
配列の要素なら in で調べられるけど
変数自体となるとどうだろうね

608 名前:デフォルトの名無しさん mailto:sage [2011/05/30(月) 21:32:47.76 .net]
>>599
何度も代入した後、最後に 0 or "" を代入した変数と区別できない。

609 名前:デフォルトの名無しさん mailto:sage [2011/05/30(月) 23:19:06.92 .net]
>>600-601
ありがとう。区別できないって、どういう状態になるの?0を代入したら0か"0"に評価される。
ああ、""を代入したら0か""に評価されて駄目ってことか!?

610 名前:デフォルトの名無しさん mailto:sage [2011/05/31(火) 00:05:27.97 .net]
あれ?試したらどっちを代入しても599の式は0に評価されたよ。区別できないケースってどういう場合?



611 名前:デフォルトの名無しさん mailto:sage [2011/05/31(火) 06:28:27.99 .net]
BEGIN {
    # 初期化直後 (未使用) の変数は数値 (0) と文字列 ("") の両方の型を持つ。
    print x == 0, x == ""; # 両方とも真

    x = 0;
    print x == 0, x == ""; # 前者のみ真。

    x = "";
    print x == 0, x == ""; # 後者のみ真。

    # 他の未使用の変数を代入すると "再初期化" できる。
    x = y;
    print x == 0, x == ""; # 両方とも真。
}

612 名前:デフォルトの名無しさん mailto:sage [2011/05/31(火) 22:57:53.71 .net]
> 初期化直後 (未使用) の変数は数値 (0) と文字列 ("") の両方の型を持つ。
IEEE Std 1003.1 の awk の EXTENDED DESCRIPTION の
Variables and Special Variables に書いてあるね。 uninitialized value というらしい。
POSIXに準拠してるawkならこうなるみたいだけど、オリジナルは知らん。

再初期化するなら$(NF+1)使うほうがいいかもね。未使用の変数を用意しなくていい。
だけど、それが必要な場面が思い浮かばないが。

関係ないけど、abs関数ってないんだね。別に良いけど、πや、
0より大きい最小の浮動小数点数は定義しててほしいなあ。

613 名前:デフォルトの名無しさん mailto:sage [2011/06/02(木) 10:09:14.37 .net]
>>605
> 再初期化するなら$(NF+1)使うほうがいいかもね。未使用の変数を用意しなくていい。
フィールド変数は常に文字列型で、 数値型は持たない。

614 名前:デフォルトの名無しさん [2011/06/02(木) 22:47:31.10 .net]
πはatan2(0,-1)でいいとして
「0より大きい最小の浮動小数点数」ってどう定義していつ使うの?

615 名前:デフォルトの名無しさん mailto:sage [2011/06/03(金) 13:48:37.95 .net]
「0より大きい最小の浮動小数点数」というのが何を希望しているかによる。
以下の3種類がある。

(1) 最小の正の非正規数
(2) 最小の正の正規数
(3) 1.0に足して丸めた結果が1.0より大きくなる最小の数

616 名前:デフォルトの名無しさん mailto:sage [2011/06/03(金) 23:58:11.26 .net]
>>606
あちゃ!そうでした。$で戻るのは文字列だった。
その仕様書読んでると、NFを拡張したとき、元々なかった所はuninitialized valueになるってあったので。

>>607
それでいいんだけど、PIとかで参照できたらもっといい、と思ったのです。
>>608
数値計算のために、CのDBL_EPSILONの代わりになる定数が欲しいなと。
任意の精度で丸められる関数もないですし。

617 名前:デフォルトの名無しさん mailto:sage [2011/06/04(土) 09:41:48.63 .net]
DBL_EPSILONが>>608の(1)〜(3)のどれかわからない?
数値計算の基本なんだが。

618 名前:デフォルトの名無しさん [2011/06/10(金) 21:49:33.34 .net]
変数名など、自前であっても規則を意識している方いますか?
awkだと、C風が一般的なのでしょうか?
一番最初がVBAだったので、長い名前と省略が混ざってしまって
自分でイライラしています。
みなさんの、通常の変数はこう、配列はこう、定数はこう、文字型はこう・・・
というものを参考にしたいです。


619 名前:デフォルトの名無しさん mailto:sage [2011/06/10(金) 22:10:28.97 .net]
>>611
システムハンガリアンを採用するかどうか悩むほど大きなものをawkで書いたことが無い

620 名前:かあた mailto:sage [2011/06/13(月) 18:37:34.88 .net]
、5なわやあふぉt( ())



621 名前:デフォルトの名無しさん mailto:sage [2011/06/15(水) 21:51:26.93 .net]
>>611
遅レスだが、型_内容の説明_名前みたくしてる。名前が一文字だとそのままだけど。
グローバル変数とローカル変数のどっち弄ってるのか分かりやすいように、ローカル変数は必ずlで始めるようにしてる。
d_per_shouhizei = 5.0とかね。

622 名前:デフォルトの名無しさん [2011/06/20(月) 18:37:26.17 .net]
gawkでBINMODEを設定すればバイナリーの入出力ができるのはわかるのですが、
入力されたバイナリーを16進ダンプして表示するにはどうしたらよいでしょうか?
od等の外部コマンドを使う意外に方法があればお教えください。

623 名前:デフォルトの名無しさん mailto:sage [2011/06/20(月) 19:17:07.50 .net]
printf("%02x\n", $1);

624 名前:天使 ◆uL5esZLBSE mailto:sage [2011/07/05(火) 00:15:13.83 .net]
二度と話かけんなよ
お前らってどうみてもゴミだよな


625 名前:デフォルトの名無しさん mailto:sage [2011/07/06(水) 14:04:55.24 .net]
ゴミんなさい

626 名前:デフォルトの名無しさん mailto:sage [2011/07/14(木) 23:55:15.84 .net]
>>595
gawk4.0.0でa[0][0]=1も可能になったじゃないか

627 名前:デフォルトの名無しさん mailto:sage [2011/07/30(土) 19:46:15.81 .net]
超初心者の質問で申し訳ありません。以下のようなデータを
aaa 10
bbb 20
ccc 30
aaa 30
bbb 30
aaa 15
ccc 30
ddd 20
以下のようにまとめたいのですが、どうしたらいいでしょうか?
aaa 55
bbb 50
ccc 60
ddd 25

628 名前:デフォルトの名無しさん mailto:sage [2011/07/30(土) 19:53:38.97 .net]
ddd 20 ではないかと思うがこんな感じかな
awk '{a[$1]+=$2} END {for (b in a) {print b " " a[b]}}' | sort

629 名前:デフォルトの名無しさん mailto:sage [2011/07/30(土) 23:15:27.52 .net]
Gawk4ならPROCINFO["sorted_in"]の設定で最後のsortが要らなくなる

630 名前:620 mailto:sage [2011/07/30(土) 23:22:20.03 .net]
>621
ありがとうございます!うまくいきました。



631 名前:デフォルトの名無しさん mailto:sage [2011/07/31(日) 15:24:48.76 .net]
gawkはもう別言語なイメージ。普段mawk使ってると

632 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 22:48:21.64 .net]
ここって生きてますか?

633 名前:デフォルトの名無しさん mailto:sage [2011/08/18(木) 01:56:26.63 .net]
生きてますん

634 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 00:53:44.39 .net]
生きていることを願って質問を。
WIN32のEXE一つで、下のTEST.AWKがマトモに動くAWKを探しています。
これら以外にありますか?

hinadori.atnifty.com/~wills/program/gawkm115.zip
my.vector.co.jp/servlet/System.FileDownload/download/http/0/376460/pack/win95/util/text/awk/gawk-mbcs-win32-20051223.zip?ds
my.vector.co.jp/servlet/System.FileDownload/download/http/0/80308/pack/win95/util/text/awk/mw32r27.lzh?ds

Cygwin版も試したのですがダメでした。

TEST.AWK
{ gsub("[0-9]","x",$0) ; gsub("ソ","ソ",$0) ; gsub("T","T",$0) ; print }

TEST.DAT
アイウエオカキクケコサシスセソ
ココココサフサコココココ
ココココサフサココココ
ココココサフサコココココ
ココココサフサコココココ
サフサフサフサフサフサ
ココココサフサコココココ
ココココサフサココココ
ココココサフサコココココ
ココココサフサコココココ
サフサフサフサフサフサ

635 名前:627 mailto:sage [2011/08/19(金) 01:00:20.60 .net]
TEST.DATは、空白が入っています。
専ブラのポップアップをコピペして下さい。

636 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 06:26:54.92 .net]
ウチに帰ってから調べてみるよ

637 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 11:02:41.54 .net]
>>627−628
cygwinのawk(GNU Awk 3.1.8)で動くけど、どうなるはずがどう動かないと言っている?
>627のtest.datなら、当然「ソ」だけが変換されるけど。

638 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 11:55:06.25 .net]
(CygwinならUTF8じゃないとうまく動かないけど)Shift JISで動作させたいってことかな?
事前にTEST.DATをnkf -wに通したら駄目かな。

639 名前:629 mailto:sage [2011/08/19(金) 21:59:57.43 .net]
>>627
スクリプトもDATもSJISで試したけど、上記3つのうち、gawk-mbcs-win32-20051223.zipはダメだったよ。
1行目がこんなんなる。

アxxエオカキクxコサxxxソ

手持ちの
GNU Awk 3.1.7(windows special Nov 24 2009)
で、--ctype=SJISやっても同じ結果になるね。

スクリプト、DATをUTF-8にして、--ctype=UTF8やってリダイレクトしたファイルは正常な結果が出るよ。
リダイレクトしないでコマンドプロンプトに表示させると化けるけど。

640 名前:デフォルトの名無しさん mailto:sage [2011/08/19(金) 23:18:25.14 .net]
EUCなら半角カナもうまくやってくれるんだが…



641 名前:デフォルトの名無しさん [2011/08/24(水) 08:07:37.54 .net]
gawkはガンガン機能を拡張してるけど、
そろそろOOP対応してくれないかな。
awk++とかあるけど、標準でOOPできれは便利。

642 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 22:44:37.24 .net]
> OOP
...もはやawkでやる意味が無いw 他にいくらでもある別の言語でいいじゃん

643 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 01:14:17.45 .net]
awkに在ると便利かもと思うのは参照値くらいかな

配列や関数への参照を値として取り出し格納したり
逆にその値から元の配列にアクセスしたり元の関数を呼んだり出来ると
相当に複雑なデータ構造が表現可能になる、それこそOOPっぽいことも可能だし

でもあんまりややこしいことやるならPerlでいいから必須ではないね

644 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 02:28:23.99 .net]
> 関数を呼んだり

変数の値を関数名として
var = "sage";
@var();
ってできるけど、それとは違うのん?




645 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 04:07:56.67 .net]
およ、もうあるのかw
最近のawkは分からねえ…ってことは、配列への参照を使って入れ子の配列とか既に作れちゃったりするのか?

646 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 10:56:54.36 .net]
配列の配列は作れるよ。gawk4なら。

647 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 19:51:33.84 .net]
(´_ゝ`)フーン

648 名前:デフォルトの名無しさん [2011/08/25(木) 20:52:51.07 .net]
class human {
  property name
  property sex
  property age
  method new(x, y, z) {
    name = x
    sex = y
    age = z
  }
  method say() {
    printf("私は%s。%d歳の%sです。\n",name, age, sex)
  }
}
class japanes

649 名前:e : human {
  property name
  property sex
  property age
  method say() {
    printf("私は%s。%d歳の%sです。国籍は日本です。\n", name, age, sex)
  }
}
BEGIN {
  alice = human.new("アリス", "女", 11)
  taro = japanese.new("太郎", "男", 15)
  yuka = japanese.new("由佳", "女", 18)
  alice.say()
  taro.say()
  yuka.say()
}
[]
[ここ壊れてます]

650 名前:641 [2011/08/25(木) 20:58:10.41 .net]
>>635
code.google.com/p/lawker/source/browse/fridge/lib/bash/awk%2B%2B/
これを使えばこの程度のOOPはどうにかできる。
本当にこの程度でいいからOOPに対応してほしい。
使う人はほとんどいないと思うが、全くできないのも困る。



651 名前:デフォルトの名無しさん mailto:sage [2011/08/25(木) 22:07:53.46 .net]
それは最早awkである必要が全く無い

652 名前:デフォルトの名無しさん mailto:sage [2011/08/26(金) 06:00:04.19 .net]
function Human(self,name,sex,age) {
self["property___name"] = name
self["property___sex"] = sex
self["property___age"] = age
self["method___say"] = "Human___say"
}
function Human___say(self) {
printf "私は%s。%d歳の%sです。\n", self["property___name"], self["property___age"], self["property___sex"]
}

function Japanese(self,name,sex,age) {
Human(self,name,sex,age)
self["method___say"] = "Japanese___say"
}
function Japanese___say(self) {
printf "私は%s。%d歳の%sです。国籍は日本です。\n", self["property___name"], self["property___age"], self["property___gender"]
}

function methodcall(obj,methodname, m) {
m = obj["method___" methodname]
@m(obj)
}

BEGIN {
Human(alice, "アリス", "女", 11)
Japanese(taro, "太郎", "男", 15)
Japanese(yuka, "由佳", "女", 18)
methodcall(alice,"say")
methodcall(taro,"say")
methodcall(yuka,"say")
}

653 名前:デフォルトの名無しさん mailto:sage [2011/08/26(金) 06:01:35.02 .net]
ごめん一部genderになってるからsexに直しといて

とりあえず、こんな感じでgawk4でもOOP自体は出来るよって話

654 名前:デフォルトの名無しさん [2011/08/27(土) 15:07:17.61 .net]
>>644
なるほどねー
とても勉強になります

でも、やっぱりOOP用の構文が使えればベストですね
そのほうがわかりやすいと思います

655 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 15:58:44.09 .net]
やっぱ別言語使うべきだろ

656 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 16:10:36.72 .net]
本当に欲しいんなら、gawkのMLにこうすればOOP実現できることを発見したんだけど、
これの糖衣構文を用意してくれって投稿するといいんじゃね
switchも実装されてるし、欲しい人が居ると分かれば付けてくれるかもよ

657 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 16:25:08.65 .net]
#! /usr/bin/env python
# -*- coding: utf-8 -*-

class human:

  def __init__(self, name, sex, age):
    self.name = name
    self.sex = sex
    self.age = age

  def say(self):
    print("私は" + self.name + "。" + str(self.age) + "歳の" + self.sex + "です。")

class japanese(human):

  def __init(self):
    super(human, self).__init__(self)

  def say(self):
    print("私は" + self.name + "。" + str(self.age) + "歳の" + self.sex + "です。国籍は日本です。")

if __name__ == "__main__":

  alice = human("アリス", "女", 11)
  taro = japanese("太郎", "男", 15)
  yuka = japanese("由佳", "女", 18)
  alice.say()
  taro.say()
  yuka.say()

658 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 16:26:25.23 .net]
pythonで書いてみると、
>>641と比べると特にわかりやすいわけでもないけど
>>644よりはわかりやすい

659 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 16:53:49.92 .net]
そりゃawkはOOPLではないからな
あくまでシェルのお供でいいと思うんだ
そしてそこに高度なOOP機能は要るとは思えない
どちらかと言えばフィールド抽出とかをもっと便利にすべきだよ

660 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 15:34:39.29 .net]
cygwin以外でgawk4.0をwindowsで使おうと思ったら、バイナリはどこで入手できもうすかね?



661 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 16:28:58.78 .net]
cygwin で駄目な理由が分からないから教えられない。

662 名前:デフォルトの名無しさん mailto:sage [2011/09/18(日) 08:02:36.95 .net]
>>652
www.klabaster.com/progs/gawk32.zip

663 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 13:00:55.06 .net]
>654 さんくすこ

>653 awkの実行形式だけ入手すれば良いようにしたいのさ。

664 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 14:01:43.39 .net]
バイナリ互換のWindowsなのに、cygwinてexeをもってくだけじゃ使えないの?

665 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 16:07:37.39 .net]
物によっては使えたような気がする。
cygwin1.dllだっけ?にパスが通ってれば大体使えたような気がする。

666 名前:デフォルトの名無しさん mailto:sage [2011/09/19(月) 17:00:12.76 .net]
結構沢山のdllが要るよ
コマンドによるけど

667 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 01:55:49.24 .net]
教えてください。英語得意な人

www.gnu.org/s/gawk/manual/gawk.html#Array-Sorting-Functions
の asort(), asorti()で使うユーザー定義の比較関数について
3番目の引数とPROCINFO["sorted_in"]に設定するのと違うのか同じなのか?

それと
www.gnu.org/s/gawk/manual/gawk.html#String-Functions
に書いてある3番目の引数の説明("descending"とか)が両立してんの?

668 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 11:34:13.18 .net]
www.gnu.org/s/gawk/manual/gawk.html#Array-Sorting-Functions
As with PROCINFO["sorted_in"], this argument may be the name of a user-defined function, ....

www.gnu.org/s/gawk/manual/gawk.html#String-Functions
The third argument can also be a user-defined function name ....
第三引数の値と同名の関数が定義済みならそれを利用するとか、
そういう方法で区別してるんじゃないの

669 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 13:33:04.59 .net]
>>659
比較関数の与え方はPROCINFO["sorted_in"]の場合と同じってことだろ。

自分で定義した関数の名前でもいいし、11.2.1.2に書いてあるようにすでに用意
されている@〜を使ってもいい。



670 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 21:59:05.28 .net]
個人的には、GAWKにはあと、Cで書いた関数の呼び出しというか
GAWKで呼ぶ関数をCで書ける機能が欲しいと思ってるんだけど、
ここ見る限り世間的にはあんまり需要ないんかねぇ。

まぁ、それやるくらいならGAWK自体に変更を加えて再コンパイルしろってことかもしれないけど。



671 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 01:44:31.01 .net]
PとかR使え言われると思う。

672 名前:デフォルトの名無しさん mailto:sage [2011/11/15(火) 01:58:32.43 .net]
>>662
ttp://www.gnu.org/s/gawk/manual/html_node/Dynamic-Extensions.html
じゃダメ?将来的にさらに拡張される可能性はあるみたいだけど

673 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 00:35:09.18 .net]
最近awkcardを知って座右に置いてるのだが、日本語版って存在するのだろうか。

674 名前:デフォルトの名無しさん [2011/12/22(木) 16:57:35.32 .net]
ttp://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_271
ここに書いてある通りにしても日本語に翻訳されません
どうしてですか?
環境は LinuxMint12 、 GNU Awk 3.1.8 です

675 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 18:01:49.60 .net]
>>666
その通りにやったと言うのなら、何故poファイルを提示しないのかね、ダミアン君。

676 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 18:07:45.38 .net]
>>667
poは作成しましたし、moも所定のディレクトリにあります。
poは自分で編集しても、そのサイトの内容をコピペしてもダメでした。

$ cat gettext.po
#: gettext.awk:10
msgid "********** Count Prime Number **********"
msgstr "========== 素数を数える =========="

#: gettext.awk:14
msgid "2 is a prime number."
msgstr "2 は素数です。"

#: gettext.awk:24
msgid "%d is a prime number.\n"
""
msgstr "%d は素数です。\n"

$ ls ja_JP/LC_MESSAGES/
gettext.mo

677 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 18:10:02.43 .net]
結果はこの通りです。

$ LC_ALL=ja_JP gawk -f gettext.awk 10
********** Count Prime Number **********
2 is a prime number.
3 is a prime number.
5 is a prime number.
7 is a prime number.

678 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 13:56:36.33 .net]
ずいぶんawkから離れていて久しぶりに使ったら
nawkに日本語のバグがあることにしばらく気づかなかった
substr()でutf-8のテキストを切り出すとおかしな値になる
gawkでは直っている

679 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 19:50:49.28 .net]
そもそもUTF-8に対応してたっけ

680 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 00:28:07.37 .net]
ttp://blog.livedoor.jp/corbie/archives/cat_94960.html
残念ながら、シフトJIS、UTF-8両方で正常に動作しそうなWindows版gawkは候補の中にありませんでした。



681 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 07:52:50.95 .net]
Linuxでは普通に動くが…

682 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 21:07:39.93 .net]
ファイル名が"*.txt"の一覧を取得するとき、"\.txt"でマッチさせると、任意の一文字.(ドット)と解釈されてしまうんですが、いい方法無いでしょうか?

683 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:04:14.36 .net]
GNU Awk 3.1.7だとドットにマッチしたけどそもそもawkの話?
具体的にコマンドがほしいな

684 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:08:23.01 .net]
昭和の頃覚えたアセンブラとC言語
これがあったから
いまだに自分が損な業界で飯を食ってる

685 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 22:36:10.83 .net]
>>676
そこからjavaに行ってスマホアプリ開発ならもう一花咲いたかもしれませんねw

686 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 23:09:38.43 .net]
馬鹿には無理

687 名前:674 mailto:sage [2012/04/30(月) 18:07:43.22 .net]
>>675
ls | awk '{ if( match($0,"\.txt") > 0) print $0 }'
↑会社のサーバ上でこんな感じのことやろうとしてたんですが、
「gawk: 警告: エスケープシーケンス `\.' は `.' と同等に扱われます」
とメッセージが出力され、ドットが任意の一文字?と解釈されて困っていましたが、
自己解決しました。(自宅のLinuxPCで動作確認しました。GAWK3.1.7及び4.0.1)
"\.txt"では無くて、".txt"で良かったんですね。
お騒がせしました。

もしかしたら、会社のサーバ(RHEL)のGAWKが古くて解決できてないかもしれませんが。

688 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 20:27:16.48 .net]
>>679
match() の第二引数に文字列を与えた場合は事前に正規表現への型変換が行われるが、
その際にエスケープが外れて /.txt/ と同等になってしまう、 ということかと。
つまり "\\.txt" とするか、 正規表現の /\.txt/ を与えればよい。

The GNU Awk User's Guide にもこの現象についての説明はあるが、
~ !~ 演算子についてしか触れられていない。
ttp://www.kt.rim.or.jp/~kbk/gawk-30/gawk_5.html#SEC32

689 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 00:27:31.74 .net]
gawk4.0.2付属の原版ではmatchの説明にもその辺触れられてるね。
www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
誰かこのバージョン日本語化してないかな。

690 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 02:26:40.35 .net]
FIFOな感じの先入れ先出しのバッファには何使えばいい?
というか、
Arrayで、たとえばA[3] からA[8]までのデータをA[1]からA[6]に動かすには何が一番早い?
できれば配列は1つしか使いたくないのだが、無理だろうか…




691 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 09:23:22.92 .net]
速さを求めるなら毎度全要素ずらすより、読み出し位置と書き込み位置の添字持って
管理した方がたいてい速い

692 名前:デフォルトの名無しさん mailto:sage [2012/07/12(木) 10:14:32.78 .net]
awkには連想配列しかないしな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef