- 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/
- 237 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 03:05:38 .net]
- >>232
考えるな。感じろw
- 238 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 07:21:00 .net]
- 「あなたは何故awkでやろうとするのですか?」
「そこにawkがあるから」
- 239 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 04:23:45 .net]
- awkからsystem()でgrepとかsedとか呼んだりする癖が付いている
シェルスクリプトにする方がむしろ違和感
- 240 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 23:56:31 .net]
- おいおい、grepやsedぐらい呼び出さずにawkでやろうぜ。
- 241 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:29:26 .net]
- grepやsedはパイプでつなげて使うものじゃないの?(^^;
- 242 名前:デフォルトの名無しさん [2009/01/10(土) 22:10:41 .net]
- gawk 3.1.4 mb のwindows版のEXEファイルが欲しい…
- 243 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:38:51 .net]
- なんでそんな古いバージョンが欲しいの?
- 244 名前:デフォルトの名無しさん [2009/01/11(日) 12:16:04 .net]
- >なんでそんな古いバージョンが欲しいの?
lengthとかsubstrで、「j」付き文字列関数があるからです。 3.1.5以降だと、同じスクリプトファイル内で、バイト単位処理と キャラクター単位処理の混在が難儀なのです。
- 245 名前:240 mailto:sage [2009/01/11(日) 15:01:36 .net]
- 3.1.5で文字の扱いが変わったのはその通りだけど、3.1.4のWindows版て
jlengthやらあったっけ? なかったと思うんだけど。
- 246 名前:デフォルトの名無しさん [2009/01/11(日) 15:48:22 .net]
- >なかったと思うんだけど。
えっ。3.1.4以前のはバイト単位オンリーって事ですか? …それでも2バイト換算で扱えばいいから、まだマシかも。 j付きが追加されていたけど、動作変更に伴って廃止された… と思っていました。 記憶にあるのは、どなたかの独自拡張別Verだったのか…?
- 247 名前:240 mailto:sage [2009/01/11(日) 17:54:21 .net]
- > えっ。3.1.4以前のはバイト単位オンリーって事ですか? ちゃう。
jなんとかがあったのは、 2.11ベースのjgawkと2.15ベースのjgawk 2.15ベースのとgawk+mb 3.0.xベースのgawk+mb で、3.1.xベースのにはなかったという話だったと思う。 それぞれやってる人が違う。
- 248 名前:デフォルトの名無しさん [2009/01/11(日) 19:05:17 .net]
- >3.1.xベースのにはなかったという話だったと思う。
そうですか…。 gawk 3.1.4 mb のwindows版のEXEファイルが欲しい… ではなくて、 3.0.xベースのgawk+mb のwindows版のEXEファイルが欲しい… という事になる訳ですが…無理っぽい。 あっても関数や組込変数が減少…その前に16bitDOS版ONLYの予感…。 諦めます。240さん、どうもでした。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:50:26 .net]
- >>245
www.hinadori.atnifty.com/~wills/ にあるよ。3.0.6のやつ。 DOS版だけじゃなくてWin32版もある。 3.0.6→3.1.xで増えた機能でも使ってんの?
- 250 名前:デフォルトの名無しさん [2009/01/11(日) 22:30:39 .net]
- >あるよ。3.0.6のやつ。
おお。 ありがとうございます。 >3.0.6→3.1.xで増えた機能でも使ってんの? いつ何が増えたのかよく把握していないんですが、 gensubとかmktimeとかswitch-caseとか…ありますかね。 まあ、代替手段はあるので試してみます。どうもです。
- 251 名前:デフォルトの名無しさん [2009/02/23(月) 08:11:12 .net]
- awkで、組み合わせの全てを作る、という事はできるのでしょうか?
いわゆるnCrの、個数ではなくて、中身を知りたいという事なのですが・・・。 (mawkを使っています)
- 252 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:18:34 .net]
- >>248
できます
- 253 名前:sage [2009/03/04(水) 15:23:19 .net]
- 248です。
なんとかできました。249さんどうもです。
- 254 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 15:24:16 .net]
- sage間違えた…
- 255 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:47:59 .net]
- int(0.5005*10000)が5004になるのはなぜですか。
- 256 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:41:00 .net]
- 丸め誤差でしょう。
切り捨て前に0.5足すとか工夫してみては如何でしょうか。 詳しくは、IEEEと丸め誤差辺りのキーワードで検索のこと。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:57:34 .net]
- >253
ありがとう
- 258 名前:デフォルトの名無しさん [2009/04/13(月) 21:36:16 .net]
- gawkで掲示板作りたいんですけど、
gawkが使える無料鯖どこかにありませんか?
- 259 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 21:58:14 .net]
- Linuxが入ってるレンタル鯖なら入ってるんじゃないかなぁ?
レンタル鯖板できいてみたら。 さくらのFreeBSDはFreeBSDのawk(!=gawk)だった。
- 260 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 22:07:10 .net]
- >>256
さくらはgawkですか。 Windowsじゃないレンタル鯖ならawkが使えても良さそうですけど、 無料ではなかなか見つからないんですよね。 perl,ruby,phpは多いんですけどねぇ。。
- 261 名前:257 mailto:sage [2009/04/13(月) 22:14:30 .net]
- 失礼。
さくらはgawkじゃないawkですか。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 13:07:13 .net]
- わらうw
ttp://awk.info/?doc/dsl/awkplusplus.html object_variable = class_name.new[(optional parameters)] object_variable.method_name(parameters) object_variable.delete
- 263 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 13:30:10 .net]
- >>259
同じくウケた awkは永続的に使っていて,C-->C++-->Javaと乗り継いできたが,awkはこれらコンパイラ言語を使う上で 良い学習材料になってきたと思い感謝している(もちろん未だにscriptのawkをawkで書いている). 唯一awkで勉強できなかったのがOOPだったから,学習材料としてのawkがこういう方向に活路を見いだすのは 良いことかもしれない.ただし実用に向けて考えてみると,個人的にはOOPが本領を発揮するのは頭の中でalgorithmを 把握しきれなくなる程度に大きなシステムを組み上げる場合なので,果たしてそれをawkで書くかといわれると….
- 264 名前:260 mailto:sage [2009/04/18(土) 13:57:19 .net]
- s/algorithm/データ構造/
- 265 名前:デフォルトの名無しさん [2009/05/09(土) 23:49:39 .net]
- 最近rubyの勉強始めたんだが、
「rubyがあればAWKいらね」とは思えん。 逆にAWKの便利さを再認識した。 やっぱり、簡単なテキスト処理は AWKでやったほうが簡単だ。
- 266 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:58:09 .net]
- 各行に対して処理って場合はawkが良いね
- 267 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 00:37:15 .net]
- rubyはオブジェクト指向を強制されるから小回りがきかん
- 268 名前:デフォルトの名無しさん [2009/05/10(日) 01:20:35 .net]
- JavaScriptが動く HTML実験部屋
ttp://homepage2.nifty.com/tomoarai/java/exper.html
- 269 名前:デフォルトの名無しさん [2009/05/14(木) 08:38:05 .net]
- jawkの話題が全然出ないね。
使ってる人少ないの?
- 270 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 23:16:20 .net]
- >>266
さくっと1行で済むのが気に入ってる俺には無用だな
- 271 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:22:34 .net]
- >>266
Jア(オ)ーク、プラグアウッ!
- 272 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 01:31:39 .net]
- ttp://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_167
Geocoding - 住所から緯度経度を検索 だって。何これおもろい。
- 273 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 16:39:12 .net]
- {if(miso<$1){printf($1)}} miso=30
を実行すると$1が1桁の数字のときにうまくいかないんですけどなぜ?
- 274 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 19:43:04 .net]
- 文字列で比較されてるんじゃね?
miso<$1-0 でやったらどう?
- 275 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:34:56 .net]
- >>271
ありがとうございます。でもだめでした。 文字列で比較されてるっぽいですね。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:04:19 .net]
- >>270
何を入力したときに何が出て欲しいの? うまくいかないってどうなるの?
- 277 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:23:40 .net]
- >>273
$1が4のときに出てほしくないのに出てしまうんです...
- 278 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:31:41 .net]
- >>274
こんなん? BEGIN{miso=30}{if(miso<$1){printf("%d\n",$1)}}
- 279 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:46:46 .net]
- >>275
出てしまう理由が気になります...なんででしょう やっぱり271さんの言うとおり文字列比較してるんでしょうか?
- 280 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:54:47 .net]
- >>276
awk のバージョン(種別)が分からない 何を食わせてるのか分からない スクリプトは一行で書いてるのかファイルにしてるのか分からない 一行で書いているならシェルに何を使っているのか
- 281 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 00:38:26 .net]
- 文字列比較されてるなら一桁のときに上手くいかないというより
二桁のときだけ上手くいくという感じなのかね。 WindowsXPのコマンドプロンプトでgawk(3.1.5)使って下記を試してみたけど その現象再現できなかった。 gawk "{if(miso<$1){printf($1)}}" miso=30
- 282 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 07:43:07 .net]
- $awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan compiled limits: max NF 32767 sprintf buffer 2040 $seq 1 40 | awk '{if(miso<$1)printf($1)}' miso=30 31323334353637383940 うまく動いているようだが。
- 283 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 18:20:09 .net]
- >>279をマネさせてもらった
$ awk -W version GNU Awk 3.1.6 Copyright (C) 1989, 1991-2007 Free Software Foundation. $ seq 1 40 | awk '{if(miso<$1)printf($1)}' miso=30 31323334353637383940
- 284 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 19:59:10 .net]
- miso=30って-v付けなくていけるんだ。しらんかった。
- 285 名前:270 のが再現できない... mailto:sage [2009/06/23(火) 01:02:55 .net]
- gawkは
コマンドラインで指定されたファイル名が var=val という形式ならば、それは変数への代入であると解釈されます。変数 var は値 val に設定されます (これは、すべての BEGIN ブロックを実行したあとに行われます)。 やっぱりもれの XPコマンドプロンプト環境でも >gawk -W version GNU Awk 3.1.6 Copyright (C) 1989, 1991-2007 Free Software Foundation. >seq 1 40 | gawk "{if(miso<$1) print}" miso=30 31 32 33 34 35 36 37 38 39 40 って期待通りの動きだYO!
- 286 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:39:07 .net]
- 固定長で改行なしのファイル(6MB超)を処理することになり、
他のソフトで「改行ありの固定長」にしてから、awkで処理していたのですが… データファイルによく出てくる文字をとりあえずRSに見立てて読み込み →RSに指定した文字を連接 →固定長の1行分より長かったらその部分を切り出し していくと「改行ありの固定長」、できちゃいました。 RSに指定した文字がしばらく出てこなければ変数パンクしちゃうし、大分危なっかしいの ですが、とりあえずawkでできたのが少しうれしい。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 03:25:12 .net]
- 改行ありの固定長をawkで読んだのなら
substr($0, start, length) でばらせよw
- 288 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 11:29:46 .net]
- >>283
>284みたいな読解力ない馬鹿が湧かないように、判り易く書きましょう。 つーか、具体的なコードも出さずに「awkでできてうれしい」なんてのはチラシの裏にどうぞ。
- 289 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 01:27:46 .net]
- fold とか?
- 290 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 09:52:52 .net]
- 正規表現で空白で区切られたテキストをHTMLでいうtableにしたいです。
例) 10進 2進 8進 000 000 000 001 001 001 002 010 002 003 011 003 ↓↓↓↓↓↓↓ <table> <tr><th>10進</th> <th>2進</th> <th>8進</th></tr> <tr><td>000</td> <td>000</td> <td>000</td></tr> <tr><td>001</td> <td>001</td> <td>001</td></tr> <tr><td>002</td> <td>010</td> <td>002</td></tr> <tr><td>003</td> <td>011</td> <td>003</td></tr> </table>
- 291 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 12:07:49 .net]
- >>287
正規表現を使うほどのことではない コアの部分だけ書くとこれだけ for(i=1;i<=NF;i++) printf("<td>%s</td>", $i)
- 292 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:12:21 .net]
- 正規表現使ってタグを切り替えたいのかな?
- 293 名前:hogehoge mailto:sage [2009/07/17(金) 16:37:
]
- [ここ壊れてます]
- 294 名前:34 .net mailto: split や asort したらどうして添字が1からになるんだ!
なんでだ! 仕様書読み飛ばしててデータ欠落させるところだった(´・ω・`) >>287 sed でええやん [] - [ここ壊れてます]
- 295 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 18:35:54 .net]
- 今までawk '{print $3}'程度しか使って無かったが、最近これを読んでawkを見直した。
www.eecs.harvard.edu/cs152/lectures/CS152-Lecture_14-Kernighan.pdf
- 296 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 15:10:31 .net]
- ttp://www.kt.rim.or.jp/~kbk/gawk-3.1/
ここのgawkで>>17のサンプルを試したが動かなかった。 gawk: test.awk:4: 致命的: 入出力用の双方向ソケット `/inet/tcp/0/www.yahoo.com/80' が開けません (No such file or directory)。
- 297 名前:hogehoge mailto:sage [2009/07/27(月) 11:13:15 .net]
- それはそこのサイトの人に言えよ
- 298 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 00:11:42 .net]
- いつのまにかgawk 3.1.7が出てた。
- 299 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 11:45:58 .net]
- Ruby 勉強中だけど AWK のほうが楽しいぜ(´・ω・`)
- 300 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:22:37 .net]
- 7月7日→[[7月7日|07月07日]]
7月28日→[[7月28日|07月28日]] 11月3日→[[11月3日|11月3日]] 12月16日→[[12月16日|12月16日]] と置き換えたいです。 perlならわりと簡単なのですが、awkで簡単にいきますか? 自分がawkのことを勉強不足だからかもしれませんけど…。
- 301 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:24:13 .net]
- ↑間違いました。
7月7日→[[7月7日|07月07日]] 7月28日→[[7月28日|07月28日]] 11月3日→[[11月3日|11月03日]] 12月16日→[[12月16日|12月16日]]
- 302 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:03:17 .net]
- 例がよくわからないんだけど,数字1桁の部分を2桁にしたいってこと?
- 303 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:13:12 .net]
- {
gsub(/月|日/," "); printf("%02d月%02d日\n",$1,$2); } とか. フィールドセパレータがデフォルト(半角スペース)の場合ね.
- 304 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:15:10 .net]
- >296
Perlで簡単に書けるなら、一旦Perlコード晒してくれるか? どうも仕様がよく解らんのだ…
- 305 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:54:28 .net]
- print gensub(/0([0-9])([0-9])/, "\\1\\2", "g", gensub(/([0-9]+)/, "0\\1", "g",
$1)) 我ながら汚ねぇなぁ(´・ω・`) >>299の方がいいな
- 306 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:27:22 .net]
- >>298,300 置換しないで変えたいとこだけ出力するならこういう意味です。
#!/usr/bin/perl while(1){ $line = <STDIN>; if($line =~ /(0?[1-9]|1[0-2])月(0?[1-9]|[1-2][0-9]|3[01])日/){ $month = $1; $day = $2; if($month >= 10) { if($day >=10){ print "$& -> [[$month月$day日]]"; } else { print "$& -> [[$month月$day日|$month月0$day]]"; } } else{ if($day >=10){ print "$& -> [[$month月$day日|0$month月$day]]"; } else{ print "$& -> [[$month月$day日|0$month月0$day]]"; } } } } 1月1日 - ユーロ導入10周年。 1月1日 -> [[1月1日|01月01]] 12月31日 - ニューヨークのマンハッタン橋開通100周年。 12月31日 -> [[12月31日]] 8月21日 - ハワイ州州制50周年。 8月21日 -> [[8月21日|08月21]] 10月1日 - パラオ独立15周年。 10月1日 -> [[10月1日|10月01]]
- 307 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:16:23 .net]
- なんか素直にPerlでやったほうが楽そうだなあ、それ。
ちなみに、そのコードじゃ無限ループするぞ。 #!/usr/bin/perl while($line = <STDIN>) { if($line =~ /(0?[1-9]|1[0-2])月(0?[1-9]|[1-2][0-9]|3[01])日/) { $month = $1; $day = $2; if($month < 10 || $day < 10) { printf "%s -> [[%d月%d日|%02d月%02d]]\n", $&, $month, $day, $month, $day; } else { print "$& -> [[$month月$day日]]\n"; } } }
- 308 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:44:03 .net]
- だめだ…コードの意味は分かるが,仕様が良く分からん.
- 309 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:47:14 .net]
- 7月7日
という文字列を [[7月7日|07月07日]] と置き換える、ってことでしょ。 なんで分からんかなぁ。そっちのが分からん。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:53:30 .net]
- 入力が07月07日だったら,
出力は[[07月07日|07月07日]]になるよね?これはOK? そもそも,そういう入力は起こりえないの?
- 311 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 18:17:38 ?2BP(0).net]
- >>305
そんな感じです。 目的を言っていないので、何がやりたいのかよくわからないのだと思います。 早い話、Wikiの記法を使ってリンクを張りたいのです。 0をくわえて桁を調整している理由は 文字列としてソートして正しく昇順に並ぶようにするためです。例えばWikipediaなら 7月7日のときは、[[7月7日|07月07日]]とすることで リンクはja.wikipedia.org/wiki/7月7日 表示される文字列は 07月07日 となります。 これをソートできるテーブルの要素にします。参考までに ja.wikipedia.org/wiki/Help:%E8%A1%A8%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9#.E5.86.8D.E6.95.B4.E5.88.97.E5.8F.AF.E8.83.BD.E3.81.AA.E8.A1.A8 この処理はawkでも可能なことは可能だったんですが、無知なせいか おそろしく不格好になりました。 >>306 それ思いました。できれば 07月07日->[[7月7日|07月07日]] のように処理したいです。
- 312 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 18:26:07 .net]
- >>303
それです。そういう意味です。
- 313 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:17:06 .net]
- # gawk による match 関数の拡張を使っている.
# 一行に複数回現れた場合は無視. BEGIN { F = "(0?[1-9]|1[0-2])月(0?[1-9]|[1-2][0-9]|3[01])日"; } { if ($0 ~ F) { match($0, F, a); if (a[1]+0 < 10 || a[2]+0 < 10) { sub(a[0], sprintf("[[%d月%d日|%02d月%02d日]]", $0, a[2], a[1], a[2], a[1])); } else { sub(a[0], sprintf("[[%d月%d日]]", $0, a[2], a[1])); } } print $0; }
- 314 名前:309 mailto:sage [2009/08/06(木) 21:21:15 .net]
- # 訂正.
BEGIN { F = "(0?[1-9]|1[0-2])月(0?[1-9]|[1-2][0-9]|3[01])日"; } { if ($0 ~ F) { match($0, F, a); if (a[1]+0 < 10 || a[2]+0 < 10) { sub(a[0], sprintf("[[%d月%d日|%02d月%02d日]]", a[1], a[2], a[1], a[2])); } else { sub(a[0], sprintf("[[%d月%d日]]", a[1], a[2])); } } print $0; }
- 315 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:59:03 .net]
- >>310 完璧です。今度からこれを使います有難うございました。
$ cat test.txt 1月1日 #m月d日 01月1日 #0m月d日 1月01日 #m月0d日 01月01日 #0m月0d日 2月10日 #m月dd日 02月10日 #0m月dd日 11月3日 #mm月d日 11月03日 #mm月0d日 12月16日 #mm月dd日 $ awk -f test.awk test.txt [[1月1日|01月01日]] #m月d日 [[1月1日|01月01日]] #0m月d日 [[1月1日|01月01日]] #m月0d日 [[1月1日|01月01日]] #0m月0d日 [[2月10日|02月10日]] #m月dd日 [[2月10日|02月10日]] #0m月dd日 [[11月3日|11月03日]] #mm月d日 [[11月3日|11月03日]] #mm月0d日 [[12月16日]] #mm月dd日
- 316 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 06:34:47 .net]
- 最初にそういうテストバターンを出そうね
- 317 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:45:35 .net]
- ここの住人がコーディング好きだからって甘えやがって(´・ω・`)
> perlならわりと簡単なのですが、awkで簡単にいきますか? って言ってるんだから、「いきます」って答えりゃいいんだよな
- 318 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:46:39 .net]
- >>312
なにその死の行進こわい
- 319 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 11:36:30 .net]
- バターン テストのデスマーチ
- 320 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 09:46:09 .net]
- >>294
3.1.7ベースのWindows用バイナリ、出ました。 ttp://www.kt.rim.or.jp/%7Ekbk/gawk-3.1/index.html#GAWK-DOWNLOAD
- 321 名前:222.248.109.70 mailto:age [2009/08/17(月) 17:45:07 .net]
- 自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その3 『いつもサボってばかりのキャップがウゼえ』 yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★ > 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0 > >>69 > 大変って言うか > 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。 > ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて > その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから > > 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。 ---------------------------------------------- この自動焼人 ★メールマガジンの配信停止をご希望される方は qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
- 322 名前:デフォルトの名無しさん [2009/10/24(土) 17:23:04 .net]
- 最後の10行を処理したくない場合、どう書けば良いでしょうか?
- 323 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 18:19:03 .net]
- 最後まで読まずに最後の10行かどうか判定する方法は無いだろうな
処理対象がファイルなら、事前にwc -lか何かで行数調べて awk に渡してみては
- 324 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 18:52:07 .net]
- 成る程、これ、という方法は無さそうですね
ちょっと考えながらやってみます
- 325 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 19:15:52 .net]
- とりあえず、こんな感じにしました
BEGIN { SKIPTAILS = 10 } { line = buf[1] for(i=1;i<SKIPTAILS;i++) buf[i] = buf[i+1] buf[SKIPTAILS] = $0 } NR > SKIPTAILS { # lineを処理 }
- 326 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:11:41 .net]
- >>321 考え方は同じだけど、forが気になったので
リングバッファで処理するようにしてみた。 BEGIN { SKIPTAILS = 10 ringpos = SKIPTAILS } { ringpos = (ringpos + 1) % SKIPTAILS line = buf[ringpos] buf[ringpos] = $0 } NR > SKIPTAILS { # lineを処理 }
- 327 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:18:06 .net]
- ありがとうございます
リングバッファ、勉強になりました 使わせて頂きます
- 328 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:22:22 .net]
- >>42
sed awk して船山に登る だろ?
- 329 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:06:14 .net]
- 質問です
gawkで { printf("%d,%s\n", NR, $0 ) > FILENAME; } という行頭に番号を振って保存する処理をして batファイルで一括処理させようとしたんですが c:\windows\gawk\gawk -f g:\作業用\n.awk g:\作業用\*.txt 実行結果が ファイル1 ファイル2 1A 4D 2B 5E 3C 6F になります ファイル2も 1D 2E 3F にするにはどうしたらよいでしょうか?
- 330 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:27:22 .net]
- FNR
- 331 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:35:21 .net]
- >>326
おお、出来た! 迅速な回答ありがとうございます
- 332 名前:デフォルトの名無しさん [2009/12/21(月) 13:53:34 .net]
- 年末にパソコンを買い換えようと思って機種選びをしていてふと気づいた、
あれ、vaioのOSがWindows7 64bitバージョンに・・・ ダメじゃん!gawkが使えなくなってしまう・・・ うーん、、、またXPを買うべきか・・・悩む・・・
- 333 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 14:21:01 .net]
- >>328
自分でコンパイルし直せばいいだけじゃないの?
- 334 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:52:20 .net]
- プログラミング言語AWK復刊だってね。
ttp://slashdot.jp/developers/article.pl?sid=10/01/06/0345207 多分必要性を感じない程度には使ってるから、買わないけど嬉しい。 布教用に買うってのもちょっとな。
- 335 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:08:56 .net]
- AAA BBB CCC … -O ZZZ YYY XXX …
awk新参です。 -O(オプション)を検索し、 -Oとそれ以降をリダイレクトしたいのですが… 良い方法、ありますでしょうか
- 336 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 15:36:31 .net]
- リダイレクトってどういう意味で使ってる?
その AAA で始まる文字列も一体どういうものなの。 コマンドライン引数なのか、ファイルから読み込んでくるのとか。 用語と状況はきちんと書いてくれ。
- 337 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 16:19:07 .net]
- D:\My Documents\gawk\331>type 331.txt
AAA BBB CCC … -O ZZZ YYY XXX 0… AAA BBB CCC … -O ZZZ YYY XXX 1… AAA BBB CCC … -O ZZZ YYY XXX 2… D:\My Documents\gawk\331>type 331.awk {match($0, " -O .*", a); print a[0];} D:\My Documents\gawk\331>gawk -f 331.awk 331.txt >a.txt D:\My Documents\gawk\331>type a.txt -O ZZZ YYY XXX 0… -O ZZZ YYY XXX 1… -O ZZZ YYY XXX 2… D:\My Documents\gawk\331>
|

|