[表示 : 全て 最新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/

381 名前:たいだけなので、文末まで処理し終えて欲しいのです。
どうにかならないでしょうか。
[]
[ここ壊れてます]

382 名前:デフォルトの名無しさん mailto:sage [2010/09/25(土) 14:55:22 .net]
シェルスクリプト内でパイプ入力されたものを処理する
アクションをヒアドキュメントで書く事は出来るでしょうか。


383 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 14:57:18 .net]
質問です。
データが
|1|aaa|
|2|bbb|
|3|ccc|
などとなっているとき
aaa
bbb
ccc
を取り出そうとして
awk 'FS="|"{print $3}' ファイル名
としたんですが、1行目だけがうまくとれません。
データファイルの1行目を空行にすれば解決できないことはないんですが、
空行を入れ忘れてしまう懸念があります。
どうすればいいんでしょうか?

384 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 15:01:46 .net]
やりたいことは awk 'BEGIN {FS="|"} {print $3}' じゃないかと思うんだけど

385 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 15:08:38 .net]
378です。
>>379
どうもありがとうございました。

386 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 18:42:12 .net]
gensub()にて、マッチした10番目以降のグループの指定の仕方を教えてください。
下記サイトでは、17番目まで普通に指定できるような事が書いてあるけど、
tounderlinedk.blogspot.com/2010/08/gensub-n-awk.html

gensub(pattern,"\\10","g",$2) とかくと
\\1(マッチ箇所)と0(文字)として解釈されちゃって上手くいなかい。

シェルスクリプト風かと思って、\\{10} も試したけどダメダッター。

GNU Awk 3.1.5です。


387 名前:381 mailto:sage [2010/09/27(月) 19:00:47 .net]
BSDのjmanには、1から9までの数字って明記されてるなあ。
実装によって違うのかなあ
パターンを動的に生成してマッチさせようとしてるから結構困る(´・ω・`)
www.linux.or.jp/JM/html/GNU_gawk/man1/gawk.1.html


388 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 19:04:47 .net]
>>381
マニュアルには1から9までって書いてあるし

Within the replacement text s, the sequence \n, where n is a digit from 1 to 9, may be
used to indicate just the text that matched the n'th parenthesized subexpression.

ソースの該当箇所(builtin.cの2542行目あたりから)みても1桁限定のロジックだよ。(3.1.7調べ)

int dig = scan[1] - '0';

なんてやってる。

389 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 19:08:03 .net]
一旦ぶった切るしかないんじゃね



390 名前:381 mailto:sage [2010/09/27(月) 19:12:31 .net]
>>383
どうもありがとうございます。

>>384
ちょっと見栄え悪くなるけどそうする(´・ω・`)

391 名前:デフォルトの名無しさん mailto:sage [2010/09/27(月) 21:27:29 .net]
>>381
なんでそこのひとは16までできたんだ?

392 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 00:32:52 .net]
10の代わりに:を使っていたりして。

393 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 03:15:24 .net]
このスレが盛況なのが珍しいから
記念パピコ。

394 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 03:41:50 .net]
15年以上前だけどawkの勉強始めて同時にperlの勉強もしてたら
気付いたらperlばっかりやっててawkすっかり忘れてしまったなぁ
今はperl捨てて専らpythonやってるけどawkもいいよね

395 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 09:40:13 .net]
Busyboxに組み込めば、それこそ炊飯器や冷蔵庫でも動くからなあ。
手軽であるにも関わらず、結構高度な処理もガリガリ書けるから好き。

Cとシェルスクリプトが好きだから、文法的にもしっくり来る。
上位互換のPerlも大好き。

396 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 14:37:59 .net]
>>376ですが、誰もかまってくれないので寂しさで死にそうです。

397 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 14:52:08 .net]
>>391
どれでも好きなのを選べ

1. xgawkを改造
2. エラーになるXMLを事前に修正してwell-formedにしてから食わせる
3. xgawkは捨てて別の言語、ライブラリを試す

398 名前:デフォルトの名無しさん mailto:sage [2010/09/28(火) 17:23:08 .net]
jawkがjwalkに見えてしまう

399 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 11:21:26 .net]
動く環境の多さ順にインタプリタを選ぶんなら、

シェルスクリプト > awk >>> perl >>>>> python >>>>> ruby >>> haskel etc.

となるだろうな。

シェルスクリプトはシェル依存な部分が多く、perl ほど高機能なものも要らない。
そんな時、小さな端末でもスマートに動いてくれる awk にちんこ勃つ。

>>389
言語に捨てるも拾うもないよ。その時々に都合の良いものを組み合わせて使うのがUNIX的な発想。



400 名前:デフォルトの名無しさん mailto:sage [2010/10/01(金) 15:33:40 .net]
>>394
「一発やろう」ですね!

401 名前:デフォルトの名無しさん mailto:sage [2010/10/09(土) 04:40:48 .net]
awk最近勉強してる。perlより全然簡単。
これなら俺でも挫折しなくてすみそう

402 名前:デフォルトの名無しさん mailto:sage [2010/10/09(土) 04:57:14 .net]
>>396 がんば!

403 名前:デフォルトの名無しさん mailto:sage [2010/10/21(木) 20:16:46 .net]
sjisで書いた
/ー/{print}
を実行すると

awk:
awk: ^ 正規表現が終端されていません。
awk: 致命的: [ または [^ が対応しません。: /[/{print}/

のエラーになってしまいます。
ーの2バイト目が[なせいだと思いますが、どう対応したらいいでしょうか?
入力ファイルはsjisで書かれていて、文字コード変換はできません。


404 名前:デフォルトの名無しさん mailto:sage [2010/10/21(木) 20:55:41 .net]
>>398
環境の問題なんだから、実行環境くらいまともに書けよ。

405 名前:デフォルトの名無しさん mailto:sage [2010/10/21(木) 21:38:24 .net]
>>398
gawk を使う

406 名前:デフォルトの名無しさん mailto:sage [2010/10/21(木) 22:52:57 .net]
環境はCentOS-5.5-x86_64でGNU Awk 3.1.5です。
/bin/awkはシンボリックリンクで、実体はgawkでした。

407 名前:デフォルトの名無しさん mailto:sage [2010/10/21(木) 23:49:35 .net]
>>401
--help 嫁

408 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 01:41:07 .net]
Windows7(64bit)で使えるawkありますか?


409 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 02:19:30 .net]
32bit版のawkをを使うんじゃダメ?



410 名前:398 mailto:sage [2010/10/22(金) 07:32:34 .net]
こうすることで対応できました。
/\x81\[/{print}

411 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 09:41:36 .net]
それでいいなら、/ー[]/でもいい希ガス。
根本的な解決になってないけどねぇ。

412 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 13:52:10 .net]
シングルクオーテーションやダブルクオーテーションの使い分けじゃね〜

413 名前:398 mailto:sage [2010/10/22(金) 19:55:53 .net]
根本的な解決するとしたら文字コードを変えることでしょうか?


414 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 20:03:18 .net]
日本語の文字コードに対応してるawkを使う、という方法もある。
今あるのかどうか知らないけど。

415 名前:デフォルトの名無しさん mailto:sage [2010/10/22(金) 20:28:38 .net]
今のgawkは普通にUnicode対応してるみたい

$ echo 'てすと' | gawk '/[ぁ-ん]/ { print length($0) }'
3

UTF-8ロケールでしか試してないけど
cygwinでも大丈夫

416 名前:デフォルトの名無しさん mailto:sage [2010/10/23(土) 01:29:00 .net]
>>404
gawkでいいかな

417 名前:399 mailto:sage [2010/10/23(土) 06:55:10 .net]
>>405

問題は解決したのかもしらんが、一応。
以下2つのWin用バイナリは問題ないので、ソースもらってLinux上でコンパイルしてみたら?

ttp://gnuwin32.sourceforge.net/packages/gawk.htm
ttp://www.kt.rim.or.jp/~kbk/gawk-3.1/


418 名前:398 mailto:sage [2010/10/23(土) 10:53:14 .net]
サーバ管理者じゃないのでサーバをいじることはできないです。
これにしたらsjisでも動くようになるのでしょうか?

419 名前:デフォルトの名無しさん mailto:sage [2010/10/23(土) 12:27:19 .net]
>>413
少なくとも自分が試したWindows2003上ではな。

▽tes.awk ※sjis
/ー/{print}


CentOS5.5上
$ gawk -f tes.awk readme.ja
awk: tes.awk:1:
awk: tes.awk:1: ^ 正規表現が終端されていません。
awk: tes.awk:1: 致命的: [ または [^ が対応しません。: /[/{print}/

Windows2003上
> gawk -f tes.awk readme.ja
⇒マッチした物が表示される

Linux上でロケールをsjis.japaneseとかにすればいいのかと思ったが、ロケール変更自体がうまくいかな



420 名前:かったわ。
困ってる事があるなら、最終的に何がしたいか言ったほうがいいよ。
[]
[ここ壊れてます]

421 名前:398 mailto:sage [2010/10/23(土) 12:40:31 .net]
Windows2003だとちゃんと動くんですね。
困っていたことは405で解決したので大丈夫です。
今は「根本的な解決」に興味があったのでお聞きした次第です。

422 名前:初心者 [2010/11/04(木) 22:14:10 .net]
awkでシェルのPATH変数をマッチさせるときにスラッシュ//を使わない方法を教えていただけませんか?

423 名前:デフォルトの名無しさん mailto:sage [2010/11/04(木) 23:14:10 .net]
>>416
初心者だからマルチが許されるとでも思ったか?

424 名前:初心者 [2010/11/05(金) 06:32:09 .net]
ごめんなさい!
知りませんでした。

425 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:54:35 .net]
配列の要素数を調べるなら、ループ処理しないと分からない?
length みたいなのは無い?

426 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 02:27:50 .net]
あるよ。まさしく、length(array)。

427 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 02:42:46 .net]
そんなもんねぇよw
と思ったらgawkにはあるのか

length([s]) Returns the length of the string s, or the
length of $0 if s is not supplied. Starting
with version 3.1.5, as a non-standard exten-
sion, with an array argument, length() returns
the number of elements in the array.

428 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 04:20:37 .net]
むしろ配列が存在するってことはその配列を作成する過程があるだろ?
作成するときに数えればいいんじゃね?

429 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 08:40:15 .net]
連想配列だったら数えないのが普通だがな



430 名前:419 mailto:sage [2010/12/25(土) 03:12:23 .net]
function で処理する時、配列だけではダメで要素数まで必要なんだかなぁ、
って事が分かりますた

431 名前:デフォルトの名無しさん [2010/12/28(火) 11:29:35 .net]
function に渡すだけなら要素数なんていらないんじゃない?


432 名前:デフォルトの名無しさん [2010/12/28(火) 13:55:13 .net]
$1 = $1みたいなトリックを見る度に奥が深いと言うよりは糞に見えてきます
翻すとUNIX文化そのものが
まあ、あくまでおれの主観ですがね

433 名前:デフォルトの名無しさん mailto:sage [2010/12/28(火) 15:24:21 .net]
>>426
awk大好きなオイラに喧嘩売るのかw
ウニックス文化最高!(NT系はUNIXのパクリ)

434 名前:デフォルトの名無しさん mailto:sage [2010/12/28(火) 15:28:13 .net]
>>427
全角英字使う奴が awk 大好きだとは到底思えん

435 名前:デフォルトの名無しさん mailto:sage [2011/01/05(水) 23:22:55 .net]
まあ冬休み期間だものね。

436 名前:デフォルトの名無しさん mailto:sage [2011/01/06(木) 00:22:04 .net]
▼tes09.awk
BEGIN{
  if (ARGV[1]=="")
    ARGV[1]="hoge.txt"
  while (getline < ARGV[1] > 0) print "BEGIN\t"$0
}
ARGV[1]=="hoge.txt"{
  print "BODY\t"$0
}

★質問
上記スクリプトを引数を付けた場合と付けない場合をそれぞれ実行しました。

▼gawk -f tes09.awk hoge.txt
BEGIN  arima_yuuichi@example.com
BEGIN  ooizumi_sadawo@example.com
BEGIN  taguchi_kenji@example.com
BODY  arima_yuuichi@example.com
BODY  ooizumi_sadawo@example.com
BODY  taguchi_kenji@example.com

▼gawk -f tes09.awk
BEGIN  arima_yuuichi@example.com
BEGIN  ooizumi_sadawo@example.com
BEGIN  taguchi_kenji@example.com

ここで、BEGIN句での ARGV[1]="hoge.txt" という代入を本編(?)でも有効にする為
にはどうすればいいでしょうか?

437 名前:デフォルトの名無しさん mailto:sage [2011/01/06(木) 00:31:45 .net]
なにもしなくても有効だと思うんだけど
質問の趣旨がわからん

438 名前:430 mailto:sage [2011/01/06(木) 06:20:53 .net]
分かり辛くてすみません。
hoge.txtの中身は下記です。

arima_yuuichi@example.com
ooizumi_sadawo@example.com
taguchi_kenji@example.com

>>430はWin32のバイナリ「GNU Awk 3.1.7(windows special Nov 24 2009)」を使用した結果です。
下のほうの実行結果では、BEGIN句でのARGV[1]への代入はBEGIN句では有効ですが、
本編では有効になっていないので出力されていないように見えます。

ちなみに、CentOS5.5上の GNU Awk 3.1.5 では下記エラーになりました。


gawk: tes09.awk:2:   if (ARGV[1]=="")
gawk: tes09.awk:2: ^ 表現の char '・' は不正です。

439 名前:デフォルトの名無しさん mailto:sage [2011/01/06(木) 08:57:49 .net]
入力レコードが1件も無いからでしょ

>gawk: tes09.awk:2: ^ 表現の char '・' は不正です。
これは全角スペース



440 名前:デフォルトの名無しさん mailto:sage [2011/01/06(木) 09:12:00 .net]
>BEGIN  arima_yuuichi@example.com
>BEGIN  ooizumi_sadawo@example.com
>BEGIN  taguchi_kenji@example.com
コレはgetlineで読んで出力したもの

>BODY  arima_yuuichi@example.com
>BODY  ooizumi_sadawo@example.com
>BODY  taguchi_kenji@example.com
コレはコマンドで指定したファイルから出力したもの

たとえば
{
  print "BODY\t"$0
}
としてやれば明らか


441 名前:デフォルトの名無しさん [2011/01/06(木) 13:46:53 .net]
質問の趣旨は、プログラム(スクリプト)の中で入力ファイル等の
コマンドライン引数を追加したいという事ですか。

コマンドライン引数の配列は ARGV ですが、コマンドライン引数の
個数を格納する ARGC という組み込み変数があります。

ARGV配列を追加したら一緒に ARGC を修正してあげないと、awkは配列が
追加された事を認識しません。

BEGIN内でARGV配列を追加した分だけARGCをインクルメントしてあげれば
追加されたARGV配列で指定されたファイルも本文の処理に渡されます。

蛇足としては、
現在処理中のファイル名が格納されている配列 ARGV のインデックスを
示す組み込み変数は ARGIND です。

私のは Win版の gawkm115 です。スクリプト内でARGV/ARGCを操作しても
期待通り正常に動きますよ。

試してみてね。


442 名前:430 mailto:sage [2011/01/06(木) 23:56:01 .net]
皆様レスありがとうございます。

>>433
>これは全角スペース

お恥ずかしい限りです(汗) 出勤前に思いつきで試したもので、スレ用に書いた
物をそのままコピってました・・・

>>434
BEGIN句のgetlineではARGV[1]への代入ができているのに、本文では有効に
ならないという事を伝えたかったのです。

443 名前:430 mailto:sage [2011/01/06(木) 23:56:17 .net]
>>435
自分の質問を見直してみると全く質問になっていなかったにも関わらずエスパー
してくださってありがとうございます。

ARGCについて理解できました。

BEGIN{
  ARGV[1]="hoge.txt"
  ARGC=2
}
ARGV[1]=="hoge.txt"{
  print "BODY\t"$0
}

こんな感じで意図した通りに出力されました。

おかげさまで今までawkの補助としてshを使ってましたが、awkだけで書ける事が
多くなりました。

引数にワイルドカードを指定して、ARGIND で特定パターンのファイル名の
物のみ処理をするとかできそうですね。

444 名前:デフォルトの名無しさん mailto:sage [2011/01/09(日) 22:38:39 .net]
質問です。
My Documents\2011\01\09(日)
というようにフォルダを切っていて、今日にcdするために、

today.bat
gawk -f today.awk > tmp.bat
tmp.bat
del tmp.bat

today.awk
BEGIN{year = strftime("%Y",systime()+9*60*60);
month = strftime("%m",systime()+9*60*60);
date = strftime("%d",systime()+9*60*60);
day = strftime("%a",systime()+9*60*60);

gsub(/(Sun)/, "(日)", day);
gsub(/(Mon)/, "(月)", day);
gsub(/(Tue)/, "(火)", day);
gsub(/(Wed)/, "(水)", day);
gsub(/(Thu)/, "(木)", day);
gsub(/(Fri)/, "(金)", day);
gsub(/(Sat)/, "(土)", day);

print "cd \"My Documents\" year "\" month "\" date day
}

というように処理しています。
これって、ひょっとして、gawkの内部からprintせずに実行することは可能でしょうか?

445 名前:デフォルトの名無しさん mailto:sage [2011/01/09(日) 22:54:33 .net]
system関数で出来るんでは?winは分からないけど

446 名前:デフォルトの名無しさん mailto:sage [2011/01/09(日) 23:06:13 .net]
system("cd \"My Documents\" year "\" month "\" date day);
とかではだめでした。


447 名前:デフォルトの名無しさん mailto:sage [2011/01/10(月) 03:54:21 .net]
>440
なんか " と \ の数がおかしくね?
My Documents\2011\01\09(日)

"My Documents\\2011\\01\\09(日)"

"My Documents\\" year "\\" month "\\" date day
だよな?

448 名前:デフォルトの名無しさん mailto:sage [2011/01/10(月) 11:42:11 .net]
アドバイスありがとうございます。
はい。
\はおっしゃるとおりですが、依然としてだめです。

today.batをコマンドプロンプトから実行すると、
printしてそのtmp.batを実行する438のパターンだと、
ちゃんとcdできて、今日のフォルダに移動するのですが、
system("cd \\"My Documents\\" year "\\" month "\\" date day);
だと、移動せずに終了してしまいます。
なんでだろーな。


449 名前:デフォルトの名無しさん mailto:sage [2011/01/10(月) 12:32:20 .net]
cygwinを入れてやってみた

systemはshで動くっぽいので
rm /cygdrive/c/Documents\ and\ Settings/test.txt
みたいに書くとちゃんと消えるみたい



450 名前:デフォルトの名無しさん mailto:sage [2011/01/10(月) 13:24:47 .net]
>>438,442

438で書いてるgawkでやりたいことってのはバッチファイルでやってるのと同じこと?
だったら無理。
system() でcdしてもsystem()から返ってきたところで元に戻る。


451 名前:デフォルトの名無しさん mailto:sage [2011/01/11(火) 01:15:49 .net]
どうせ糞nixツールだから日本語や空白はダメなんだろ

452 名前:デフォルトの名無しさん mailto:sage [2011/01/11(火) 09:05:01 .net]
>>444
なるほど。gawk内部ではシステムを実行していても、gawkを出ると、それも終わっちゃうんですね。なるほど。
よくわかりました。ありがとうございます。

453 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 02:44:33 .net]
とりあえずAWKで書いた巨大なスクリプトを、鯖で回し続けるのはやめてください。
非効率極まりない

454 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 15:27:12 .net]
それはその人に言って下さい

455 名前:デフォルトの名無しさん mailto:sage [2011/01/19(水) 21:03:10 .net]
その場で使えるのがawkだけだったんです

456 名前:デフォルトの名無しさん [2011/01/19(水) 23:56:54 .net]
文字から文字コード取り出せないのが残念
逆はsprintf("%c", 0x41)とか出来るのにな

457 名前:430 mailto:sage [2011/01/20(木) 00:40:40 .net]
>>447
効率のいいプログラムで書き直してやればいいじゃない。

458 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 09:05:02 .net]
>>450
つord.awk

gawk付属のライブラリで、asciiの範囲の対応表作ってひくという
簡単な仕組み。



459 名前:デフォルトの名無しさん mailto:sage [2011/01/20(木) 23:49:13 .net]
#!/bin/gawk --re-interval -f

↑のファイルを実行するとオプションが不正と言われて実行できないのですが
コマンドラインのオプションで指定する以外にやり方はありますか?



460 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 05:12:58 .net]
>>453
無理にawkスクリプトにせずに

#!/bin/sh
awk '
#awkコード
'

っていうシェルスクリプトにしたらどうかな

461 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 08:45:02 .net]
#!でインタプリタに渡す引数の扱いは実装依存だからな。
linuxだと空白を含んだ全ての文字列が一つの引数として
渡されるので、複数のオプションは渡せない。不便だけど
そういうものなのであきらめてください。素直にシェルを
間に入れるのがいいと思うよ。


462 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 12:45:00 .net]
gawk '$3!="*"' in.txt>out.txt
という処理で、20GBぐらいのin.txtを数百MBぐらいにスリムアップしてます。
問題は、その処理を10本ほど並行に作業させているんですが
topで見てみるとほとんどのgawkプロセスがsleepかstackedになっていて
あんまりもりもり働いてくれません。IOが律速なのでしょうか?
CPUもメモリも最大限積んでます。


463 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 12:50:02 .net]
stacked -> stuckでした。すいません。

464 名前:デフォルトの名無しさん [2011/01/21(金) 13:26:09 .net]
'$3!="*"'
これって書き間違い?


465 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 13:47:33 .net]
削られるデータの例
745_17_70_F3 4 * 0 0 * * 0 0 GGAGTGCCCCACACTTGGAGGCGAGCGCCCGGCAGACTTCCCCGCCGCC &+))8'1%+%-%%'((-)%%)8+,&+*7'+/%5''%%%%%-')-/'%/( XM:i:0

残るデータの例
745_377_43_F3 0 chr1 181855450 255 48M * 0 0 CATGTATGTGGCCAAAGGAACAACGCTATGTTTCCTAAAAGGCCTAGA G`[[`a`ab`^\ZYZ[SIR\Z[L7I_L>HU^bOKSDES[PO9-HNG7= XA:i:2 MD:Z:26C21 NM:i:1 CM:i:3

こういうのが80万行ぐらいあるようです。

466 名前:デフォルトの名無しさん [2011/01/21(金) 13:52:48 .net]
スクリプトの中身は実際は違うわけね

たぶん、データの格納場所がプログラム実行マシンと別のマシンの
ディスクなんじゃないかな。
ネットワークがビジー状態だと思う。


467 名前:453 mailto:sage [2011/01/21(金) 16:09:37 .net]
>454-455

ありがとうございました。
挙動を変える組み込み変数も無いようですね。

468 名前:デフォルトの名無しさん [2011/01/21(金) 16:47:10 .net]
とりあえず df コマンドで作業ディレクトリと /var/tmp の空き領域が
確保されていることと、出力ファイルのサイズやタイムスタンプが徐々に
更新されていることを確認するくらいしかないんじゃないかな。
ローカルディスクでやればもっと早いと思うけど。

469 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 17:42:04 .net]
>>460
なるほど。
xgridをつかって、2台のマシンで10本ずつほど並行してgawkを走らせておりました。
NFSをつかって5GBほどの(先ほどは20GBと書きましたが間違いです)in.txtの
のデータを読み込んで、処理後のデータをout.txtに書き出しているので、
ネットワークビジーになってしまうというわけですね。
ネットワークの問題とは。。。
一応、エラーでこけることなく、しゅくしゅくと処理は進むので気にしないことにします。



470 名前:デフォルトの名無しさん mailto:sage [2011/01/21(金) 17:44:39 .net]
2台のマシンで20本でした(10+11)。。。
一プロセスあたり5GBのファイルを読み込むので、ネットワークが悲鳴を上げていると。

471 名前:デフォルトの名無しさん mailto:sage [2011/01/24(月) 21:31:50 .net]
今年、gawkを大学で習って色々弄ってるんだけど、perlとかより自由度が低いと言われた。そんなに差があるの?

472 名前:デフォルトの名無しさん mailto:sage [2011/01/24(月) 21:46:54 .net]
>>465
簡易言語として捉えるかツールとして捉えるかの違いじゃね〜
俺パールよりオークの方が好きだけど。


473 名前:デフォルトの名無しさん mailto:sage [2011/01/24(月) 22:19:29 .net]
>>466
なるほど。まぁ、そんなに複雑なことをこなすスキルを持ち合わせてないからもう暫くawkで遊んでみるか。

474 名前:デフォルトの名無しさん mailto:sage [2011/01/24(月) 23:30:11 .net]
自由度というよりは機能が少ないじゃないのか?

475 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 05:02:06 .net]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

476 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 11:23:33 .net]
>>467
perlユーザはすべてをperlだけでやろうとする。C/C++/Javaも使うユーザはawkの方を好む。
C/C++/Javaに手を延ばすつもりならむしろawkのほうがいいよ。perlだと自己完結してしまうから。

477 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 16:02:25 .net]
perlよりawkの方が速い事ってないじゃん。
今のawkの使い道はワンライナーをコマンドラインのパイプに混ぜる程度でしよ。
俺は、256倍本の長篇スクリプトをいくつか書いたけど、
当時はまだperlなんて使われてなかった。時代が違う。

478 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 18:11:52 .net]
>>470
それは偏見だろ
autoconfなどの非常に基本的なツールでもPerlが使われているし
opensslのようにconfigureの(主にWindows用の)ポータビリティを上げるために
Perlを利用しているものもある

言語の適性をわかった上で適材適所で使えばいいんだよ

479 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 21:08:21 .net]
日本国際賞
「米ベル研究所特別名誉技師のデニス・リッチー博士(69)と米グーグル社特別技師のケン・トンプソン博士(67)」

毎日jp - 毎日新聞のニュース・情報サイト
mainichi.jp/select/science/news/m20110126k0000m040012000c.html



480 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 21:29:34 .net]
>>471
>時代が違う。

時代と言う意味では、最近はデフォで Python が入っていたりするので
Perl を使うなら Python を選んじゃうな。

あんまり速さを競う仕事をしていないのと、ワンライナーを書く事が
多いので、awk も絶賛大活躍しているけど。

Perl がフルセットの言語なら awk は DSL みたいな物で、個人的には
awk の方が気安く書ける気がする。

481 名前:デフォルトの名無しさん mailto:sage [2011/01/25(火) 21:57:07 .net]
pythonは、コマンドラインで使いにくい。
-cで引数に一応コマンド渡せるけど、インデントの問題があるし、
perlの-pや-nみたいに標準入力のループ渡せないから。







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

前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