- 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/
- 205 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:39:26 .net]
- >>201
別にいいんじゃね? 巨大な中間ファイルを作るってわけでもないんだろうし。 まぁ、次の理由で私は中間ファイルを作るのは避けるけどね。 ・フルパスを指定しない場合、カレントディレクトリに書き込み権限がある保障がない。 ・そもそも同名ファイルが存在していて書き込み権限がないかも知れない。 ・つーか、同時に2件動かしたらバッティングしてしまう。 ・だからと言って、一々ユニークな名前のファイル名を生成するのも面倒だ。 ・しかも、中間ファイルは後で消しておく必要があるかもしれない。 それと、自前で入力を生成するなら、最初から分割された状態で作ればいいからsplitは要らないね。 パターンを使うかifを使うかは趣味の問題のような気がするけど。 # $1+$2+$3<10{print;}と書くかif($1+$2+$3<10){print;}と書くかの違いだもんね。
- 206 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:19:00 .net]
- 色々考え方があるのね。
自分ならトリッキーな細工して1つに収めず分割してif使わずに書くけど。 手早くカタをつけられるのがawkの良い所だと思うし、 技巧に走ると間違いなく忘れるのでメンテ不可能になる可能性大 ま、それはそれとして>>198はパズル的な面白さがあって良いね。
- 207 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 19:54:42 .net]
- >202
う〜ん、言われてみればそうかも。 一応、今回のは仕事で使うわけでもなければ他人に使ってもらう予定もない 完全な個人用スクリプトなのでどうにでもなりますが これが業務や自分以外も使うものであれば素直にifなんでしょうね。
- 208 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 20:50:40 .net]
- 2008/09/15 13:17 61 20080915142145.txt
2008/09/16 13:17 316 2008091611529.txt 2008/09/22 20:09 24,028 2008_0922asahiindex.txt 2008/09/22 12:57 1,545 clean.txt というファイル一覧から、gawkで今日の日付のファイルだけ抜き出すにはどうすりゃいいんだっけ? BEGIN{month = strftime("%m",systime()); date = strftime("%d",systime())} /month/ && /date/ {print $0} でいいかと思ったら、/ /のなかにmonthとかは使えないらしい。 /strftime("%d",systime())/ {print $0} とべた書きしてもだめ。 ど忘れ中。ヘルプミー。
- 209 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 21:05:13 .net]
- BEGIN{date=strftime("%m/%d")} $0 ~ date {print $0}
- 210 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 21:45:34 .net]
- >>206
thanks!
- 211 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 19:41:51 .net]
- 質問です。
入力中のファイル名はFILENAMEにセットされますが、 入力中のファイルのパスを取得するにはどうしたらよいですか。
- 212 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 22:13:43 .net]
- >>208
FILENAMEで得られる情報が全て。フルパスが欲しいということなら、 cwdを取得してそこからの相対パスがFILENAME。
- 213 名前:デフォルトの名無しさん [2008/11/12(水) 19:19:08 .net]
-
awkの結果を set か setenv の変数に代入したいです。 awk '{ print $1+ $3 }' test.txt で数値が出ます。 この結果を変数に代入するにはどうしたらいいんでしょうか? set tmp=`awk '{ $1+ $3 }' test.txt` これだと上手くいきません。print はそのままでいいのでしょうか?
- 214 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:24:22 .net]
- なんで print を省略できると考えたのかが謎だが
- 215 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:57:16 .net]
- >print はそのままでいいのでしょうか?
まず試せよw
- 216 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 14:17:14 .net]
- 新紀元社のプログラミング言語awkがどこも売り切れなんだけど
もう入らないのかな
- 217 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 03:02:56 .net]
- >>211
printは画面表示するもの→変数に入れるだけなら不要 …と思ったんじゃ内科ね
- 218 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:28:33 .net]
- カンマ区切りのデータファイルがあり、その中で、第1フィールドと第3フィールド内にもし
子音、子音、子音、母音が存在すればその行だけ抜き出すオークのスクリプトファイルをつくりたいのですがどうすればよいですか
- 219 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:41:15 .net]
- >>215
データファイルのサンプルと抜き出したい行ヨロ
- 220 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:50:40 .net]
- こんな感じです
takeshi,fiad,fdjioaf,fdjsoafds(←該当なし) dddacea,fsaofsa,rrra,fjisaofdjsa(dddaとrrraが該当) aexxxu,dsoifsa,yyyuo,fjsaofa(xxxuとyyyuが該当)
- 221 名前:びぎなぁ mailto:sage [2008/11/18(火) 12:12:55 .net]
- オークスクリプトを実行すると情報を表示するようにしたのですが1行目と最後の行だけを表示しないようにするには
END内に何て書けば宜しいでしょうか
- 222 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 12:43:59 .net]
- >>215
BEGIN{FS=","} function term_check(term, lower_term) # lower_term は局所変数 { lower_term=tolower(term) if(lower_term ~ /[bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][aiueo]/) return 1 return 0 } { if(term_check($1) && term_check($3)) print } パターン繰り返しって {3} とかでいけるはずなんだが 書き方知らないのでコピペしたw
- 223 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 12:47:37 .net]
- >>218
逐次出力してる? END でまとめて出力してる?
- 224 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 13:53:22 .net]
- >>218
1行ずつバッファリングして、次の行の入力で前の行を出力すれば最後の行は消えてなくなる。 awk 'NR > 2 {print buffer;} NR > 1 {buffer = $0;}'
- 225 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 14:20:29 .net]
- >>215
gawkなら awk -F "," -v r="[bcdfghj-np-tv-z]{3}[aiueo]" --posix '$1 ~ r && $3 ~ r' $1と$3どちらか一方にあればいいなら&&を||に変えてね
- 226 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 16:29:37 .net]
- >>219
助かりました!
- 227 名前:びぎなぁ mailto:sage [2008/11/18(火) 16:46:03 .net]
- 出来ました ありがとうございます
- 228 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 23:48:41 .net]
- 込み入ってて整理できないので教えてください。
・対象のテキストは2行目がない(1行目しかない)かつ ・1行目はひらがなカタカナ漢字で15文字以内 という条件を書くのって、次のようにしたのですが、うまくヒットしません。 どう書けばいいでしょう? NR==2 && length($0) == 0 && NR==1 && /[ぁ-んァ-ヶ亜-腕]{1,15}/
- 229 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 23:53:31 .net]
- >>225
NR == 2 && NR == 1じゃ、絶対成立しないだろ。
- 230 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 23:54:54 .net]
- awkは行を1行ずつ処理するから、事前にトータル行数を知ることはできない。
トータル行数が1行であることを保証したいなら、ENDブロックで処理するしかない。
- 231 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 00:22:37 .net]
- >事前にトータル行数を知ることはできない
BEGIN部で数えれば?
- 232 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 00:28:19 .net]
- >>228
どうやって? 対象がファイルである保証があるならwcでも呼べばいいけどそれならawkでやる必要さえないよね。
- 233 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 03:49:07 .net]
- { a = $0 }
END { if (NR == 1 && a ~ /re/) print a } とか?
- 234 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:58:06 .net]
- どなたか、任意ビット幅の2の補数HEXをDECに変換するプログラムを書いてもらえませぬか?
- 235 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 12:02:58 .net]
- 仕様が不明確なところがあるし、なによりなんでawkで?
- 236 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 22:53:51 .net]
- >>232
ここがawkスレだからでしょ。
- 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の方がいいな
|

|