X



awkについて語るスレ $2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2007/02/23(金) 23:55:42
腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ

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

◆ 関係スレ
シェルスクリプト相談室
http://pc10.2ch.net/test/read.cgi/tech/1112553783/
AWKでCGI
http://pc10.2ch.net/test/read.cgi/php/1171804314/
【sed】シェルスクリプト総合@LINUX Part2【awk】
http://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/
0101デフォルトの名無しさん
垢版 |
2008/02/10(日) 20:36:22
98じゃないけど

awk '{count[$1] += $2;} END{for (i in count) {printf "%s %i\n", i, count[i]}}'

こうやって書けばしんせつじゃね?
データの中のaaaとloopカウンターのaaaを同じ名前にするのは意地悪だと思うよ

0102デフォルトの名無しさん
垢版 |
2008/02/10(日) 20:37:23
101です。すまんonz
0103≠98
垢版 |
2008/02/10(日) 20:39:44
あー、みんな書いているから私の書いたのは大幅に削るか。
そのENDブロック内は、
for (制御変数 in 連想配列) {...;}
というパターン。

その前段のcount[$1] += $2は一行目のとき
count["aaa"] += 1と解釈される。以下同様に。
このcountが連想配列として使われているということ。
010597
垢版 |
2008/02/10(日) 20:52:15
いえいえいえいえ…そういう意味じゃなくて教わっていながらすいませんです。
上記で書いたとおり便利ツールに頼り切ってて殆ど知らない私が悪いのですが…。
今一生懸命3byte程度の脳みそで勉強してるんですが、2日目で挫折しそうで質問させて貰いました…。

たとえばログには
Feb 9 22:44:40 localhost postfix/qmgr[1936]: 345C48C0154: from=<use1@example.com>, size=556, nrcpt=1 (queue active)
と必ず出ます。で、
1,生ログをそのまま処理するのが怖い(大きなファイル)ので、日付でログを抽出して別ファイルへ保存。
2,grepで nrcpt=と抽出して、さらにgrep -vで除外するドメインを指定して抽出
3,そしてsedでnrcpt=を削除して
4,ここで>97のように$7と$9を並べたところで脳みそのバッファエラーを起こしました。

この処理の方法もエレガントなことは分かっていますが、恥は承知でお伺いした次第です…。
0107デフォルトの名無しさん
垢版 |
2008/02/14(木) 02:38:02
>>106
それはリテラルとして扱ってということかい?
なら全部エスケープすればいいと思うが何か問題があるの?
0108デフォルトの名無しさん
垢版 |
2008/02/16(土) 01:08:44
awkで現在時刻からn分前から以降のログだけを抜き出したいんですが、どうすればいいでしょうか…。
02 15 12:34:56 xxxxxxxxx
02 15 13:45:01 xxxxxxxxx
...
...
...
とかの形式なので、strftime()とかで現在とログの時刻を比較して抜き出す、とかを試したんですがダメでした…
0109デフォルトの名無しさん
垢版 |
2008/02/16(土) 01:49:16
>>108 これで駄目かな?(一応 gawk 3.0.4 では動いた)
BEGIN{
n=5
basetime=strftime("%m %d %H:%M:%S", systime()-60*n)
}
{
chktime=substr($0, 1, 14)
if(chktime >= basetime) print
}
0110デフォルトの名無しさん
垢版 |
2008/02/16(土) 02:23:28
>109

ありがとうございます…素直に目が鱗でした…。

> chktime=substr($0, 1, 14)

なんですね…
perlが使えない環境なので、これが分かればいろいろ流用効くので助かりました。
ありがとうございます。もうちょっと精進します。。。
0111デフォルトの名無しさん
垢版 |
2008/02/18(月) 18:58:36
>>29
昨年6月に「AWKを256倍使うための本」が本屋の書棚にあったので買いました。
奥付に
1993年8月21日初版発行
2007年5月9日 第1版第16刷発行
と書かれています。
0116デフォルトの名無しさん
垢版 |
2008/03/28(金) 21:53:28
sed, awk, ruby を使う。
それぞれ適材適所で使うけど、
「sed だけ」「awk だけ」で済ませられると、
不思議な喜びを感じる。
0117デフォルトの名無しさん
垢版 |
2008/03/30(日) 14:05:33
>>116
うち、AIX使ってるんでksh+sed+awk+perlだな。
rubyが標準でインストールされてる環境ってあんまないと思う。
0119デフォルトの名無しさん
垢版 |
2008/04/06(日) 10:26:45
最近のgawkがネットワークにも使えると知ってちょっと驚いたw
カーニハンの本レベル(とか256倍)しか知らない人って多いと思う。
0120デフォルトの名無しさん
垢版 |
2008/04/06(日) 12:44:41
ノーマルのawkでXMLを字下げしたりしてうまく表示させるにはどうすればいいのかな・・・
0121デフォルトの名無しさん
垢版 |
2008/04/06(日) 17:09:18
sedだけで書けると、俺って頭イイかもって思う。

#!/bin/sed -f
0122デフォルトの名無しさん
垢版 |
2008/04/06(日) 17:16:17
文字列の単純な置換だけならawkより簡単に書けるんだけど。
awkに固執しないで臨機応変にsedを使うって意味でなら要領がいいという意味で賢いけど。
# awkで書いた方が簡単なことをsedで頑張って書いたのだとしたら、その意味では頭悪いなw
0124デフォルトの名無しさん
垢版 |
2008/04/06(日) 18:49:04
>>24
awkって表計算のような処理に特化してますよね。
その点が非常にユニークというか事務処理の言語だな、と。
visicalc(1979)awk(1977)ですからawkのほうが若干古いんですが、
表計算はセルに直接式を書くという発想が新しかった。うむむ。
0125デフォルトの名無しさん
垢版 |
2008/04/06(日) 19:26:56
VisiCalcの考案者Dan Bricklinによるアイデアの説明
ttp://www.danbricklin.com/history/saiidea.htm

Danの電卓がHPじゃなくてTIなのが意外な感じ。
The idea for the electronic spreadsheet came to me while I was a student at the Harvard Business School, working on my MBA degree, in the spring of 1978.
Sitting in Aldrich Hall, room 108, I would daydream.
"Imagine if my calculator had a ball in its back, like a mouse..." (I had seen a mouse previously, I think in a demonstration at a conference by Doug Engelbart, and maybe the Alto).
And "..imagine if I had a heads-up display, like in a fighter plane, where I could see the virtual image hanging in the air in front of me.
I could just move my mouse/keyboard calculator around, punch in a few numbers, circle them to get a sum, do some calculations, and answer '10% will be fine!'"
(10% was always the answer in those days when we couldn't do very complicated calculations...)
0126デフォルトの名無しさん
垢版 |
2008/04/07(月) 02:52:10
はじめましてgawkの質問です
お手すきの時にでもご解答頂けましたら助かります

2chでお話していただいた方からgawkを教えて頂きました
正規表現でマッチした部分がいくつあっても全ての箇所を1アクションで保存できる優れものです
当方、言語は全く知らないので先ほどまでテスト実行しては驚いていました
この優れものを今後末永く使っていきたいのですが
下記の事項をググって見たのですがわかりませんでした
どなたかわかる方おられましたら教えて下さい

私のやりたいこと
・EUCを読み込んでS-JISを出力
・既存のテキスト末尾に追加書き込み保存
(教えて頂いたスクリプトは上書き保存なので出力先の内容が消えてしまいます)

気長に待っていますので何卒よろしくお願い致します
0127デフォルトの名無しさん
垢版 |
2008/04/07(月) 03:10:31
>>126
前者はawkでやるべきことではない。iconv, nkfなどそれ専用のツールがある。
後者も必ずしもawkは不要。コマンドラインが使える環境なら普通にできる。
例えば、Unix系なら cat append.txt >> original.txt で既存のファイルに追加できる。
DOS系でも、type append.txt >> original.txt でできる。
要は、awkのいいところはそれ単体でなんでもできる(或いはできない)ことではなく、
コマンドライン環境で力を発揮するツールであること。

例えば、正規表現でマッチした文字列を置換するだけならテキストエディタでもできる。
あーそうそう、エディタがあれば文字コードの変換もそれだけでできる。
所謂テキストエディタを使ったことがないなら、一度(正規表現検索機能、
文字コード変換機能のある)テキストエディタを触ってみるといいかもしれない。
0128デフォルトの名無しさん
垢版 |
2008/04/07(月) 03:32:54
>>127さん
>>126です
お疲れのところ早々のご解答誠にありがとうございます
コンバートは別のツールで行う
DOS環境ではtype append.txt >> 出力先ファイル名で追加書き込み
了解しました
エディターは秀丸エディターを使っています
コンバートは出来るのですが検索でマッチした文字列は1箇所ずつコピーなんです
sakuraエディターで一括コピーや切り取りが出来ると教えてくれた方もいてたのですが
sakuraエディターは試したことが無いんです
詳しくありがとうございました
0129デフォルトの名無しさん
垢版 |
2008/04/07(月) 03:56:33
AAA.txtを開き”東京(.+?)号室”を検索する
マッチした複数箇所を一括でコピーしてTEST.txtにペーストする

BBB.txtを開き”東京(.+?)号室”を検索する
マッチした複数箇所を一括でコピーしてTEST.txtの末尾にペーストする

CCC.txtを開き”東京(.+?)号室”を検索する
マッチした複数箇所を一括でコピーしてTEST.txtの末尾にペーストする

よろしくお願いします
0131デフォルトの名無しさん
垢版 |
2008/04/07(月) 06:48:34
>>130
質問に具体性がないから一般論を書いただけだけど。

>>129
awk '/東京(.+?)号室/ {print > "TEST.txt";}' AAA.txt
awk '/東京(.+?)号室/ {print >> "TEST.txt";}' BBB.txt
以下同様に。
0132デフォルトの名無しさん
垢版 |
2008/04/07(月) 12:02:34
>>131
レスありがと
gawk '/東京(.+?)号室/ {print > "TEST.txt";}' AAA.txt
gawk '/東京(.+?)号室/ {print >> "TEST.txt";}' BBB.txt
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
gawk3.16では使えない?

0136デフォルトの名無しさん
垢版 |
2008/04/07(月) 16:36:42
DOSの場合は空白を含む場合シングルクォートじゃダメだからな。
ダブルクォートで括って中のコードは
シングルクォートか、エスケープしてダブルクォート入れるか。

一番簡単なのは、ワンライナーでもファイルに起こしてしまうこと。
gawk -f myscript.awk AAA.txt
とやってしまえば、シングルクォートとかダブルクォートとか気にする必要はない。
0137デフォルトの名無しさん
垢版 |
2008/04/07(月) 18:22:15
>>132
二つ問題がある。
gawkの正規表現では.+?というのは使えない。
cmd.exeでは、シングルクォートを引数を
くくるのに使えない。

なんかよくわからんが、perlでテキストを丸飲みしてから
処理すればいいんじゃないのか?
0138デフォルトの名無しさん
垢版 |
2008/04/12(土) 19:00:42
VisiCalc といえば、出始めの頃に TRS-80 用 を Radio Shack で見せてもらったんだけど、学生だった私には価値がわからなかったなぁ。
まぁ、これに限らず、『なんでこんなコマンドやオプションがあるんだ?』ってのは多い。
使い方じゃなく、なぜそれがあるのかを包括的に解説した本や web site ってありますか。(たとえば多くの unix コマンドを網羅しているとか)
0141デフォルトの名無しさん
垢版 |
2008/05/06(火) 02:42:04
>>132 もう居ないかな。gawk3.1.6 + nkf2.0 使用@cmd.exe

C:\work>type aaa.txt (※EUCなので化ける事を確認)
、ロ、イ、ロ、イ
ナ・ケ貍シ
ナ・」イケ貍シ
ナ・」ア」ーケ貍シ
ナ・、ロ、イケ貍シ
ナ・、ユ、ャケ・ナ・ユ、ャケ貍シ
ナ・」ウケ貍シ、ネナ・」オケ貍シ

C:\work>nkf -Es AAA.txt
ほげほげ
東京号室
東京2号室
東京10号室
東京ほげ号室
東京ふが号
東ふが号室
東京3号室と東京5号室

C:\work>nkf -Es AAA.txt| gawk "/東京.*号室/{print $0}"
東京号室
東京2号室
東京10号室
東京ほげ号室
東京3号室と東京5号室

既出の通り文字変換nkf(>>127) 正規表現の制約で条件変更(>>137)
実際に使う場合はこんな感じでバッチ作るとか。
C:\work>nkf -Es AAA.txt| gawk "/東京.*号室/{print $0}" >>TEST.txt
0142141
垢版 |
2008/05/06(火) 02:56:02
と、方法を書いておいてアレだけど、
秀丸使ってるならgrepの実行で検索するファイルに(現在の内容)で
検索結果からファイル名と行番号を除去するのでもできそうな気がする。
盛大にスレ違いだけど。
0146デフォルトの名無しさん
垢版 |
2008/06/25(水) 02:17:58
質問です!

以下のファイルhogeからawkで、価格を抜き出して合計値を出したいと思っています。
ファイルの内容は、書籍名と価格です。価格は一番後ろの数字になります。

----------------------
$ cat hoge
それいけ!あんぱんまん 1000
メタボリックを撃退せよ 1000
下流社会 1000
上流社会と下流社会 日本のこれから 1000
論文 2008 日本の抱える問題 1000
論文 2007 日本の抱える問題 過去問題集 1000
----------------------

難しいのが、書籍名の2008や2007などの数値が含まれていることや空白が含まれていることです。
1行目の場合2列目が価格になりますが、2行目の場合4列目が価格となります。

このように一番最後の列(価格)を取得し、合計値を計算するにはどうすればよいでしょうか?

ご教示お願いいたします。


0153デフォルトの名無しさん
垢版 |
2008/06/29(日) 21:37:04
Windows 版の gawk-3.1.5 で`双方向パイプがうまく動作しません。以下、
http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk.html#SEC182
からのサンプルファイルですが、途中で止まってしまって、返事が返ってきません。

BEGIN {
command = "sort"
n = split("abcdefghijklmnopqrstuvwxyz", a, "")

for (i = n; i > 0; i--)
print a[i] |& command
close(command, "to")

while ((command |& getline line) > 0)
print "got", line
close(command)
}

Cygwin の gawk では問題ありませんでした。
0158デフォルトの名無しさん
垢版 |
2008/07/02(水) 09:32:16
gawk.dllって、まだ誰かメンテしてくださってるんでしょうか?
最新版gawkのdllを探してるんですが、見つかりません。

または、ソースのtar.gzからdllを作る方法が載っているページを
御存知の方がいらっしゃいましたら、教えていただけると助かります。
0160デフォルトの名無しさん
垢版 |
2008/07/02(水) 10:42:47
http://ftp.gnu.org/gnu/gawk/ からダウンロードできるgawk-*.tar.gzのことですが。。
sourceからgawk.exeを作ったりしないのですか??

dllと書いているのでわかるかとは思いますが、
windows環境下での話です。普段はcygwinでmakeしたgawkを使っているのですが、
dllがあると他の言語から呼び出して使えるので便利かなーと思ってます。
0162デフォルトの名無しさん
垢版 |
2008/07/02(水) 11:53:32
>>160
昔あったDLL版は作者が独自に作ったものみたいで
本家に反映されてないから本家のソースからDLLを作るのは無理。
DLL版のソースを参考にして自力で作るか
できないなら作者に連絡して協力を求めるしかない。
0165155
垢版 |
2008/07/05(土) 15:47:31
>156
XP [Version 5.1.2600] でつ
0169デフォルトの名無しさん
垢版 |
2008/07/20(日) 00:40:48
AWK 使って15年? 30年前のコードが吐き出すデータをちょこっと処理しようとして…
FS=/[ ()]+/ は期待通りの動きをせず、FS="[ ()]+" と書かねばならない。
初めて知った。
 検索しても、これについて明快に書いてあるページがなかなか見つからなかったが
>正規表現定数がそれ自身として現れたとき、それはパターン中に現れたかのように、
>つまり`($0 ~ /foo/)' のようにみなされる。
<中略>
>言語のこの機能は、POSIX標準までドキュメント化されなかった。
orz
 これで1時間ぐらいムダにした。私が知らなかっただけですか??
0170デフォルトの名無しさん
垢版 |
2008/07/20(日) 00:58:40
『プログラミング言語AWK』には一応載ってるけどな
> (FSに代入される)文字列が1文字より長いときは,正規表現として扱われる
0172デフォルトの名無しさん
垢版 |
2008/07/20(日) 02:09:53
>>170
 ””で囲んだ文字列が正規表現として扱われる ということと
 //で囲んだ正規表現定数で書いてはいけない ということは同じではない。
実際、split関数の 第3引数に与える正規表現は どちらでも動く
 むむむ、ここでは($0~/foo/)に置き換えて評価されないんだ…
171の意見が正しいようだね チャンチャン

0173デフォルトの名無しさん
垢版 |
2008/07/21(月) 12:39:44
複数のファイルの読み込みってできますか?
print ファイル1の$2 ファイル2の$1
みたいな感じで
0174デフォルトの名無しさん
垢版 |
2008/07/21(月) 13:06:32
>>173
pasteで繋いじゃダメ?
私はよくやるけど。
仮にファイル1が5カラム固定なら、
paste ファイル1 ファイル2| awk '{print $2 $6;}'
てな感じで。
# カラム数可変ならもう一捻り必要だけどね。
0176デフォルトの名無しさん
垢版 |
2008/07/22(火) 18:37:52
awkすごい便利で、gnuplotと組み合わせてExcelから解放されつつあります。
上の方にあったDFAとNFA使ってる事からくる違いってなんですか?
0177デフォルトの名無しさん
垢版 |
2008/07/23(水) 02:40:07
>>176

一番の違いは、DFAだと後方参照ができないことかな。
とりあえず

DFA
前準備に手間を掛けるけど処理そのものは早い

NFA
即座に処理を始めるけど、処理に時間がかかる場合がある。

ぐらいに考えておけばいいと思う。
0179デフォルトの名無しさん
垢版 |
2008/08/02(土) 14:34:05
sh + awk は明らかに簡単だと思う。
sh + awk で出来ることを perl のみで記述する人の気持ちがどうしても理解出来ない。
ただ、ネットワークプログラミング以上になるとC, perl, ruby にならざるを得ないけど。

マシン単体での種々の手続き記述だと、
sh + awk がやっぱり一番完結になると思うんだけどな〜。
0180デフォルトの名無しさん
垢版 |
2008/08/02(土) 14:49:58
おれもawkでできることならawkでやる。
でもあまりにトリッキーなことになりそうだったらperlでやったりするかな。
0181あいちゃん
垢版 |
2008/08/03(日) 01:39:18
人に渡す可能性があるなら、awkは結構つらいことがある。
Perlでやれば基本的に問題ないから、Perlで書く癖がつく。
ShellScriptでいったん使うだけなら、awkは便利だけど。
0182デフォルトの名無しさん
垢版 |
2008/08/04(月) 01:23:58
>>180
俺も AWK でできるならAWK。
と考えると バイナリーのデータいじる以外はAWKでできるのでは…
(少なくとも 俺に日常のニーヅでは そうだ)
0183デフォルトの名無しさん
垢版 |
2008/08/04(月) 02:16:24
>>182
同感。ただバイナリは仕方ないにしても、
全半角混在の固定長フォーマットが扱いにくいんだよな。
ASCIIにすると全角のみ部分が処理しにくいし、
SJISとかにすると正しく切り出せないし・・・
あれはなんとかならんものかな。
0185デフォルトの名無しさん
垢版 |
2008/08/11(月) 15:38:13
ttp://www.kt.rim.or.jp/~kbk/gawk-3.1/
でダウソできるのがASCIIとSJISをうまく扱えるやつぢゃねの?
0186デフォルトの名無しさん
垢版 |
2008/08/13(水) 00:38:23
>>185
いや、そのgawk使ってるけど、全半角混在の固定長は困るはず。
両方別々なら問題なく扱えるけど、同時には扱えない。
例えば。SJIS1行5バイト+改行の固定長ファイルで
1行は2項目(a:全半角混在4バイト b:半角のみ1バイト)のファイルがあるとき。
asciiモードならa, bを切り分けられるがaの全角文字は処理できない。
sjisモードならa, bを切り分けられない。

悩ましいのは、項目を切り分けるスクリプトをascii オプションで起動して
出力結果をsjisで処理すれば(めんどくさいけど)現状で処理できてしまう。
ので、マニュアルに書いてある通り、作者をおねがいすれば可能性はあるかもしれないが、
お願いするのが躊躇われる感じなのね。
0188デフォルトの名無しさん
垢版 |
2008/08/15(金) 02:08:00
UTF-8の場合でも固定長は半角幅しか対応できてない。
文字数とバイト数と表示幅とか、日本語は面倒だのう。

length()とかでバイト数を拾えないから自前で処理もやりにくい。
0189デフォルトの名無しさん
垢版 |
2008/08/19(火) 22:37:59
>>188
一瞬納得しかけたけど。
冷静に考えると、そもそも1文字が可変長であるUTF8を
固定長ファイルの文字コードに使おうと考えた奴を締め上げて
泣くほど問い詰める方が先だと思うのは俺だけ?

考えても考えてもメリットが思いつかないよ…
0190デフォルトの名無しさん
垢版 |
2008/08/21(木) 00:40:10
>>189
ほとんどの文字コードが可変長だからなあ。
相対的に見ればマシな方に入るんじゃない?
ホストが絡むと文字コード周りは悲惨だよ…
ホストじゃないならそもそも固定長じゃなくて良いんだけどね。
0191デフォルトの名無しさん
垢版 |
2008/08/23(土) 01:53:25
あるフィルタスクリプトをgawkで書いているのですが
文字のコードを整数値に変換しようとしてうまくいきません
たとえば「c」という文字のコードを整数値にしようとして
BEGIN {
 testChar = "c";
 printf("testChar=%d\n",testChar);
}
のようにしても「testChar=0」と表示されてしまいます
良い方法があればお教えください
0192デフォルトの名無しさん
垢版 |
2008/08/23(土) 03:21:15
>>191

awklib に ord ってユーザー定義のライブラリ関数があるからそれを使う。
自前で作ってもいいけどね。

くわしくは info gawk で調べて。
0193191
垢版 |
2008/08/23(土) 03:28:08
>>192
ありがとうございます
早速検討してみます
0194191
垢版 |
2008/08/23(土) 10:56:41
>>192
ttp://www.kt.rim.or.jp/~kbk/gawk-30/gawk_16.html
にあったものを試してみました.期待どおりの動作をしてくれます.
どうもありがとうございました.
0195デフォルトの名無しさん
垢版 |
2008/09/15(月) 01:12:37
入力内容をawkで生成することは出来ますでしょうか
もしくはBEGIN等のブロック内で文字列を生成して
その文字列のパターン毎に分岐、フィールドを使っての処理
(要はawkに入力ファイル渡した時に簡単に書ける処理)
を簡単に書くことは出来るのでしょうか

例えば…どんな処理が適切な説明か判りませんが
BEGIN{for(i=0;i<10;i++) print int(rand()*10),int(rand()*10),int(rand()*10)}
の結果に対して
$1+$2+$3<10{ print $1+$2+$3 }
$1+$2+$3>=10{ print ($1+$2+$3) % 10 }
…とかそんな感じで、テキストを生成した結果に対して
フィルターとして比較式や正規表現で分岐して、フィールドを使って処理する感じです。

やっぱりバッチファイルとawkファイルをいくつも作ったり
一行一行に対してif文で分岐したりsplitで分割するしか無いですかね…。
0196デフォルトの名無しさん
垢版 |
2008/09/15(月) 01:52:51
>>195
敢えて入力を生成したいのなら、awkをパイプで繋げばいいと思う。
そうではなく、単に乱数で処理を振り分けたいのなら普通にif文でいいと思う。

それはさておき、
--
$1+$2+$3<10{ print $1+$2+$3 }
$1+$2+$3>=10{ print ($1+$2+$3) % 10 }
--
は別に上の条件式は要らんだろ。一桁の数値を10で割った余りは元のままだからな。
0197デフォルトの名無しさん
垢版 |
2008/09/15(月) 14:18:55
>196
いやあくまで例題なので内容は深く考えないでください…orz

普通にif文とは言うものの、折角awkが標準で備えてる便利な機能を無視して冗長な書き方するのも難だし
かと言って.awkファイル複数個とバッチで、パイプでつなげて処理するのも…う〜ん、となってしまう。
良い書き方無いかなぁと思ったので聞いてみたのですが、ifとsplitで頑張ります。
0198デフォルトの名無しさん
垢版 |
2008/09/16(火) 02:58:54
質問がよくわからんのだが、BEGIN部で生成したファイルを処理部で扱いたいということかな?
例えば、
gawk 'BEGIN{ ARGV[1]="in_file.txt"; ARGC=2; }{ print }'
ってやったら in_file.txt を表示できるぞい
0199デフォルトの名無しさん
垢版 |
2008/09/16(火) 09:51:03
>198
!!!
目から鱗です。

そっか、ファイル生成しちゃえば一発で行けるのか…やってみます
0200デフォルトの名無しさん
垢版 |
2008/09/16(火) 15:07:48
うげ、一旦ファイルを作るのはありなのかよ。
ifを使うのは冗長なのに、ファイルを作るのは冗長じゃないってどんなセンスなんだ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況