腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語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/
探検
awkについて語るスレ $2
■ このスレッドは過去ログ倉庫に格納されています
2007/02/23(金) 23:55:42
329デフォルトの名無しさん
2009/12/21(月) 14:21:01 >>328
自分でコンパイルし直せばいいだけじゃないの?
自分でコンパイルし直せばいいだけじゃないの?
330デフォルトの名無しさん
2010/01/14(木) 03:52:20 プログラミング言語AWK復刊だってね。
ttp://slashdot.jp/developers/article.pl?sid=10/01/06/0345207
多分必要性を感じない程度には使ってるから、買わないけど嬉しい。
布教用に買うってのもちょっとな。
ttp://slashdot.jp/developers/article.pl?sid=10/01/06/0345207
多分必要性を感じない程度には使ってるから、買わないけど嬉しい。
布教用に買うってのもちょっとな。
331デフォルトの名無しさん
2010/02/28(日) 11:08:56 AAA BBB CCC … -O ZZZ YYY XXX …
awk新参です。
-O(オプション)を検索し、
-Oとそれ以降をリダイレクトしたいのですが…
良い方法、ありますでしょうか
awk新参です。
-O(オプション)を検索し、
-Oとそれ以降をリダイレクトしたいのですが…
良い方法、ありますでしょうか
332デフォルトの名無しさん
2010/02/28(日) 15:36:31 リダイレクトってどういう意味で使ってる?
その AAA で始まる文字列も一体どういうものなの。
コマンドライン引数なのか、ファイルから読み込んでくるのとか。
用語と状況はきちんと書いてくれ。
その AAA で始まる文字列も一体どういうものなの。
コマンドライン引数なのか、ファイルから読み込んでくるのとか。
用語と状況はきちんと書いてくれ。
333デフォルトの名無しさん
2010/02/28(日) 16:19:07 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>
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>
334331
2010/02/28(日) 18:43:32335デフォルトの名無しさん
2010/02/28(日) 19:00:04 Q: make spits out errors like Makefile.awk:256: fatal: match() cannot have 3 arguments
A: Your AWK is too old to recreate the Makefile. The build is done based on the distributed Makefile. Everything shall compile successfully though.
So if the compile succeeds just ignore such errors, please.
A: Your AWK is too old to recreate the Makefile. The build is done based on the distributed Makefile. Everything shall compile successfully though.
So if the compile succeeds just ignore such errors, please.
336335
2010/02/28(日) 19:22:38 {print substr($0, match($0, " -O .*")+1);}
338デフォルトの名無しさん
2010/02/28(日) 22:25:50 ボソ 本当に勉強になったかどうかは疑問だ・・・
おっと一言オウかったか。
おっと一言オウかったか。
339デフォルトの名無しさん
2010/03/04(木) 15:04:38 gsub()とかで引数に変数を利用したいのですがどうすればいいのでしょうか?
gsub(str1,str2)みたいに。
gsub(str1,str2)みたいに。
340デフォルトの名無しさん
2010/03/04(木) 21:44:52 >>339
man gawkより
gsub(r, s [, t])
For each substring matching the regular expression r in the string t,
substitute the string s, and return the number of substitutions.
If t is not supplied, use $0. An & in the replacement text is
replaced with the text that was actually matched. Use \& to get a
literal &. (This must be typed as "\\&"; see GAWK: Effective AWK
Programming for a fuller discussion of the rules for &'s and
backslashes in the replacement text of sub(), gsub(), and gen sub().)
man gawkより
gsub(r, s [, t])
For each substring matching the regular expression r in the string t,
substitute the string s, and return the number of substitutions.
If t is not supplied, use $0. An & in the replacement text is
replaced with the text that was actually matched. Use \& to get a
literal &. (This must be typed as "\\&"; see GAWK: Effective AWK
Programming for a fuller discussion of the rules for &'s and
backslashes in the replacement text of sub(), gsub(), and gen sub().)
341デフォルトの名無しさん
2010/03/08(月) 21:36:03 awk 'BEGIN{x="ABCDE";y="BCD";z="XXX";gsub(y,z,x);print x}'
何が難しいのかよくわからん。
何が難しいのかよくわからん。
342デフォルトの名無しさん
2010/03/17(水) 22:07:37 時々awkだと遅いのでperlに書き換えるという人がいますが、
実際のところ速くなるんでしょうか?
私の環境ではforループや加算などはawkのほうが速そうですが、
どのような処理の場合にperlのほうが速くなりますか?
$ time mawk 'BEGIN{x=0;for(i=1;i<=1000000;i++){x=x+i};printf("%f\n" ,x)}'
500000500000.000000
real 0m0.131s
user 0m0.120s
sys 0m0.000s
$ time gawk 'BEGIN{x=0;for(i=1;i<=1000000;i++){x=x+i};print x}'
500000500000
real 0m0.289s
user 0m0.284s
sys 0m0.000s
$ time perl -e '$x=0;for($i=1;$i<=1000000;$i++){$x=$x+$i};print $x'
500000500000
real 0m0.379s
user 0m0.376s
sys 0m0.004s
実際のところ速くなるんでしょうか?
私の環境ではforループや加算などはawkのほうが速そうですが、
どのような処理の場合にperlのほうが速くなりますか?
$ time mawk 'BEGIN{x=0;for(i=1;i<=1000000;i++){x=x+i};printf("%f\n" ,x)}'
500000500000.000000
real 0m0.131s
user 0m0.120s
sys 0m0.000s
$ time gawk 'BEGIN{x=0;for(i=1;i<=1000000;i++){x=x+i};print x}'
500000500000
real 0m0.289s
user 0m0.284s
sys 0m0.000s
$ time perl -e '$x=0;for($i=1;$i<=1000000;$i++){$x=$x+$i};print $x'
500000500000
real 0m0.379s
user 0m0.376s
sys 0m0.004s
343デフォルトの名無しさん
2010/03/17(水) 22:26:14 >>342
「awkだと遅いのでperlに書き換えるという人」 に聞けば分かる
「awkだと遅いのでperlに書き換えるという人」 に聞けば分かる
344デフォルトの名無しさん
2010/03/19(金) 09:08:06345デフォルトの名無しさん
2010/03/20(土) 01:03:01 カーニハンとパイクの『プログラミング作法』にawkとperl
(とCとC++とJAVA)の比較があるな
今のマシン使って書き換えなきゃならないほど遅いって
どんな処理なんだろう?
(とCとC++とJAVA)の比較があるな
今のマシン使って書き換えなきゃならないほど遅いって
どんな処理なんだろう?
346デフォルトの名無しさん
2010/03/21(日) 13:44:10 >342
awk 等を組み合わせて実行するとプロセス起動のコストがかかるので perl で一つに纏める、という話じゃないの?
awk 等を組み合わせて実行するとプロセス起動のコストがかかるので perl で一つに纏める、という話じゃないの?
347デフォルトの名無しさん
2010/03/22(月) 17:35:11 文字コードのコードを変数にして文字列を操作することってできますか?
文字列中の全角文字を半角文字に変える華麗な方法を模索しています。
文字列中の全角文字を半角文字に変える華麗な方法を模索しています。
348デフォルトの名無しさん
2010/03/22(月) 18:01:58 Use iconv.
349デフォルトの名無しさん
2010/03/22(月) 18:25:10 > 文字コードのコードを変数にして文字列を操作することってできますか?
なにをしたいのかよくわかんないんだけど。
> 文字列中の全角文字を半角文字に変える華麗な方法を模索しています。
華麗なのはtrコマンドを使う方法。ただtrがマルチバイトをうまく扱ってくれるか
どうかはこころもとない。
Perlならtrを、Rubyなら文字列クラスのtrメソッドを、
Pythonならstringモジュールのmaketrans関数と文字列のメソッドtransleteを使う、
という手がある。
awkないし(tr以外の)古典的なツールで華麗にやる方法はないと思う。
なにをしたいのかよくわかんないんだけど。
> 文字列中の全角文字を半角文字に変える華麗な方法を模索しています。
華麗なのはtrコマンドを使う方法。ただtrがマルチバイトをうまく扱ってくれるか
どうかはこころもとない。
Perlならtrを、Rubyなら文字列クラスのtrメソッドを、
Pythonならstringモジュールのmaketrans関数と文字列のメソッドtransleteを使う、
という手がある。
awkないし(tr以外の)古典的なツールで華麗にやる方法はないと思う。
350デフォルトの名無しさん
2010/03/24(水) 17:11:16 Excelで
全角半角変換は ASC()
半角全角変換は JIS()
全角半角変換は ASC()
半角全角変換は JIS()
351デフォルトの名無しさん
2010/03/25(木) 08:34:11 >>347
1. EUC-JPにして(nkfとか)kakasi で、戻す
2. それだったら最初から、nkf -Z
3. gawk前提で、文字毎に処理(LANGを指定して子プロセス起動)
awkの中で閉じてやるのはめんどくさそう
1. EUC-JPにして(nkfとか)kakasi で、戻す
2. それだったら最初から、nkf -Z
3. gawk前提で、文字毎に処理(LANGを指定して子プロセス起動)
awkの中で閉じてやるのはめんどくさそう
352デフォルトの名無しさん
2010/03/29(月) 23:34:27 gawk 3.1.6
system(cmd) を使うと、アンチウィルスソフト(kaspersky)の
アプリケーション履歴にバッチファイルが登録されるのを発見。
close(cmd) しても同じ。
while(cmd|getline>0){}
で代用すると残らなくなった。??
system(cmd) を使うと、アンチウィルスソフト(kaspersky)の
アプリケーション履歴にバッチファイルが登録されるのを発見。
close(cmd) しても同じ。
while(cmd|getline>0){}
で代用すると残らなくなった。??
353デフォルトの名無しさん
2010/05/13(木) 00:22:57 仏でブルカ否定の決議採択 「国の価値観と相容れない」
http://www.cnn.co.jp/world/AIC201005120004.html
テヘランで、ブルカを着て入出国する時って、顔のチェックどうするんだろう。
他人や男でもばれないの?
http://www.cnn.co.jp/world/AIC201005120004.html
テヘランで、ブルカを着て入出国する時って、顔のチェックどうするんだろう。
他人や男でもばれないの?
354デフォルトの名無しさん
2010/05/13(木) 00:23:49 >>353
誤爆スマン
誤爆スマン
355デフォルトの名無しさん
2010/05/14(金) 13:38:24356デフォルトの名無しさん
2010/05/18(火) 10:51:40 awkのprintについてご教示下さい。
下のような出力が有った場合、例えば
lrwxrwxrwx 1 root root 70 May 18 10:37 hoge
ls -al | awk '{print$1$2$2$4$6$7$8$9}' とすれば「$5」の
「70」を抜くことが出来ますが、これが$100とかまで続く場合、
「$5」だけを抜きたい場合記述が大変になります。
何か良い方法は無いものでしょうか?
下のような出力が有った場合、例えば
lrwxrwxrwx 1 root root 70 May 18 10:37 hoge
ls -al | awk '{print$1$2$2$4$6$7$8$9}' とすれば「$5」の
「70」を抜くことが出来ますが、これが$100とかまで続く場合、
「$5」だけを抜きたい場合記述が大変になります。
何か良い方法は無いものでしょうか?
357デフォルトの名無しさん
2010/05/18(火) 11:01:32 $nに代入があると、その時点で$0が再構成される。
区切りの空白が$5のあったところだけ2個になるのが気にならなければ、
ls -al | awk '{$5 = ""; print}'
とすればよい。
空白2個を修正するならこうする。
ls -al | awk '{$5 = ""; print $0}' | awk '{$1 = $1; print}'
区切りの空白が$5のあったところだけ2個になるのが気にならなければ、
ls -al | awk '{$5 = ""; print}'
とすればよい。
空白2個を修正するならこうする。
ls -al | awk '{$5 = ""; print $0}' | awk '{$1 = $1; print}'
358デフォルトの名無しさん
2010/05/18(火) 11:03:15 $0 は余計だった。
ls -al | awk '{$5 = ""; print}' | awk '{$1 = $1; print}'
ls -al | awk '{$5 = ""; print}' | awk '{$1 = $1; print}'
359デフォルトの名無しさん
2010/05/18(火) 11:07:03 2つめのawkの$1 = $1は何のため?
360デフォルトの名無しさん
2010/05/18(火) 11:34:06 なにもしないと、$0は読み込んだそのままなので空白2個は空白2個のまま。
$1=$1で代入してやると、$1, $2, ...を空白1個でつないだものが$0に代入されるので、
空白2個だったところが空白1個になる。
$1=$1で代入してやると、$1, $2, ...を空白1個でつないだものが$0に代入されるので、
空白2個だったところが空白1個になる。
361デフォルトの名無しさん
2010/05/18(火) 11:35:04 2つめのawkに食わせた時点で$n (n>0)は詰まるけど$0は入力行そのまま
空白2個なので$0を再構成すると空白1個区切りになる
空白2個なので$0を再構成すると空白1個区切りになる
362デフォルトの名無しさん
2010/05/18(火) 12:21:12363デフォルトの名無しさん
2010/05/18(火) 15:08:38 $1 = $1 ってイマイチよく解らん
$1ってFSで区切られた一つ目だよね?
なんでそれ自身を自分に代入したらスペースが消えるん?
$1ってFSで区切られた一つ目だよね?
なんでそれ自身を自分に代入したらスペースが消えるん?
364デフォルトの名無しさん
2010/05/18(火) 15:27:35 $0の再構成が行われるからって説明されてるだろ。
$0の再構成とはいったんばらした$1,$2,...をOFSを挟んで
つなげ直すってことなので、何で区切られていたかは
保存されない。
$0の再構成とはいったんばらした$1,$2,...をOFSを挟んで
つなげ直すってことなので、何で区切られていたかは
保存されない。
365デフォルトの名無しさん
2010/05/18(火) 15:41:56366デフォルトの名無しさん
2010/05/18(火) 15:42:39 ちょっと気になって試してみた。
% echo a b | gawk '{OFS="-";$1=$1;OFS="=";print}'
a=b
再構成は$1=$1をやってすぐじゃなくて、次に$0が使われるとき、ってこと
なのかな?
% echo a b | gawk '{OFS="-";$1=$1;OFS="=";print}'
a=b
再構成は$1=$1をやってすぐじゃなくて、次に$0が使われるとき、ってこと
なのかな?
367365
2010/05/18(火) 16:27:59 解った
http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk.html
警告: 一部のバージョンのawkは NFを減じたときに$0の再構築を行わない。
結局のところ、awkにレコード全体の再構築を強制したときにはその時点で
フィールドの値とOFSが使われる。再構築を行うためには、何らかの無害な
代入を行う:
$1 = $1 # force record to be reconstituted
賢くなった。あんがと。
http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk.html
警告: 一部のバージョンのawkは NFを減じたときに$0の再構築を行わない。
結局のところ、awkにレコード全体の再構築を強制したときにはその時点で
フィールドの値とOFSが使われる。再構築を行うためには、何らかの無害な
代入を行う:
$1 = $1 # force record to be reconstituted
賢くなった。あんがと。
368デフォルトの名無しさん
2010/05/18(火) 16:46:58 awkは奧が深いのぉ
369デフォルトの名無しさん
2010/05/19(水) 22:24:52 久しぶりにいいもんを見させてもらいますた><
370デフォルトの名無しさん
2010/05/24(月) 09:55:14 知らなかった。
勉強になった。
勉強になった。
371デフォルトの名無しさん
2010/05/24(月) 15:25:46 みんな>357のお蔭で多くを学んだな。
372デフォルトの名無しさん
2010/05/29(土) 04:53:07 名前:
E-mail:
内容:
cygwinだと
% cut -f1 -d, hoge.csv
より
% awk -F, '{print $1}' hoge.csv
の方が速かった。
#実行時間ね
#Perl?シラネ
E-mail:
内容:
cygwinだと
% cut -f1 -d, hoge.csv
より
% awk -F, '{print $1}' hoge.csv
の方が速かった。
#実行時間ね
#Perl?シラネ
373デフォルトの名無しさん
2010/06/07(月) 11:45:38374デフォルトの名無しさん
2010/06/07(月) 12:04:05 手元のlinux環境だとcutの方が速いという普通の結果でしたが。
hoge.csvは6桁の乱数3つを「,]で区切って並べた100万行の
ファイルです。
% time cut -f1 -d, hoge.csv >/dev/null
cut -f1 -d, hoge.csv > /dev/null 0.21s user 0.01s system 99% cpu 0.222 total
% time awk -F, '{print $1}' hoge.csv >/dev/nulll
awk -F, '{print $1}' hoge.csv > /dev/nulll 1.52s user 0.03s system 99% cpu 1.558 total
ちなみにバージョンは
cut (GNU coreutils) 8.5
GNU Awk 3.1.7
hoge.csvは6桁の乱数3つを「,]で区切って並べた100万行の
ファイルです。
% time cut -f1 -d, hoge.csv >/dev/null
cut -f1 -d, hoge.csv > /dev/null 0.21s user 0.01s system 99% cpu 0.222 total
% time awk -F, '{print $1}' hoge.csv >/dev/nulll
awk -F, '{print $1}' hoge.csv > /dev/nulll 1.52s user 0.03s system 99% cpu 1.558 total
ちなみにバージョンは
cut (GNU coreutils) 8.5
GNU Awk 3.1.7
375デフォルトの名無しさん
2010/06/07(月) 12:22:48 あーなるほど、なんか判った。cygwinのfgetc()が遅いからじゃないかな。
fgetc()とfgets()で時間を較べたときにfgetc()の方がずっと遅かった記憶がある。
fgetc()とfgets()で時間を較べたときにfgetc()の方がずっと遅かった記憶がある。
376デフォルトの名無しさん
2010/09/13(月) 14:14:54 xgawk (gawkでなく)にとあるwebページを食べさせると、XMLERRR (not well-formed)で中断します。
そのページがwell-formedか極悪かは私にとってどうでもよく、単に内容を得たいだけなので、文末まで処理し終えて欲しいのです。
どうにかならないでしょうか。
そのページがwell-formedか極悪かは私にとってどうでもよく、単に内容を得たいだけなので、文末まで処理し終えて欲しいのです。
どうにかならないでしょうか。
377デフォルトの名無しさん
2010/09/25(土) 14:55:22 シェルスクリプト内でパイプ入力されたものを処理する
アクションをヒアドキュメントで書く事は出来るでしょうか。
アクションをヒアドキュメントで書く事は出来るでしょうか。
378デフォルトの名無しさん
2010/09/27(月) 14:57:18 質問です。
データが
|1|aaa|
|2|bbb|
|3|ccc|
などとなっているとき
aaa
bbb
ccc
を取り出そうとして
awk 'FS="|"{print $3}' ファイル名
としたんですが、1行目だけがうまくとれません。
データファイルの1行目を空行にすれば解決できないことはないんですが、
空行を入れ忘れてしまう懸念があります。
どうすればいいんでしょうか?
データが
|1|aaa|
|2|bbb|
|3|ccc|
などとなっているとき
aaa
bbb
ccc
を取り出そうとして
awk 'FS="|"{print $3}' ファイル名
としたんですが、1行目だけがうまくとれません。
データファイルの1行目を空行にすれば解決できないことはないんですが、
空行を入れ忘れてしまう懸念があります。
どうすればいいんでしょうか?
379デフォルトの名無しさん
2010/09/27(月) 15:01:46 やりたいことは awk 'BEGIN {FS="|"} {print $3}' じゃないかと思うんだけど
380デフォルトの名無しさん
2010/09/27(月) 15:08:38381デフォルトの名無しさん
2010/09/27(月) 18:42:12 gensub()にて、マッチした10番目以降のグループの指定の仕方を教えてください。
下記サイトでは、17番目まで普通に指定できるような事が書いてあるけど、
http://tounderlinedk.blogspot.com/2010/08/gensub-n-awk.html
gensub(pattern,"\\10","g",$2) とかくと
\\1(マッチ箇所)と0(文字)として解釈されちゃって上手くいなかい。
シェルスクリプト風かと思って、\\{10} も試したけどダメダッター。
GNU Awk 3.1.5です。
下記サイトでは、17番目まで普通に指定できるような事が書いてあるけど、
http://tounderlinedk.blogspot.com/2010/08/gensub-n-awk.html
gensub(pattern,"\\10","g",$2) とかくと
\\1(マッチ箇所)と0(文字)として解釈されちゃって上手くいなかい。
シェルスクリプト風かと思って、\\{10} も試したけどダメダッター。
GNU Awk 3.1.5です。
382381
2010/09/27(月) 19:00:47 BSDのjmanには、1から9までの数字って明記されてるなあ。
実装によって違うのかなあ
パターンを動的に生成してマッチさせようとしてるから結構困る(´・ω・`)
http://www.linux.or.jp/JM/html/GNU_gawk/man1/gawk.1.html
実装によって違うのかなあ
パターンを動的に生成してマッチさせようとしてるから結構困る(´・ω・`)
http://www.linux.or.jp/JM/html/GNU_gawk/man1/gawk.1.html
383デフォルトの名無しさん
2010/09/27(月) 19:04:47 >>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';
なんてやってる。
マニュアルには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';
なんてやってる。
384デフォルトの名無しさん
2010/09/27(月) 19:08:03 一旦ぶった切るしかないんじゃね
386デフォルトの名無しさん
2010/09/27(月) 21:27:29 >>381
なんでそこのひとは16までできたんだ?
なんでそこのひとは16までできたんだ?
387デフォルトの名無しさん
2010/09/28(火) 00:32:52 10の代わりに:を使っていたりして。
388デフォルトの名無しさん
2010/09/28(火) 03:15:24 このスレが盛況なのが珍しいから
記念パピコ。
記念パピコ。
389デフォルトの名無しさん
2010/09/28(火) 03:41:50 15年以上前だけどawkの勉強始めて同時にperlの勉強もしてたら
気付いたらperlばっかりやっててawkすっかり忘れてしまったなぁ
今はperl捨てて専らpythonやってるけどawkもいいよね
気付いたらperlばっかりやっててawkすっかり忘れてしまったなぁ
今はperl捨てて専らpythonやってるけどawkもいいよね
390デフォルトの名無しさん
2010/09/28(火) 09:40:13 Busyboxに組み込めば、それこそ炊飯器や冷蔵庫でも動くからなあ。
手軽であるにも関わらず、結構高度な処理もガリガリ書けるから好き。
Cとシェルスクリプトが好きだから、文法的にもしっくり来る。
上位互換のPerlも大好き。
手軽であるにも関わらず、結構高度な処理もガリガリ書けるから好き。
Cとシェルスクリプトが好きだから、文法的にもしっくり来る。
上位互換のPerlも大好き。
391デフォルトの名無しさん
2010/09/28(火) 14:37:59 >>376ですが、誰もかまってくれないので寂しさで死にそうです。
392デフォルトの名無しさん
2010/09/28(火) 14:52:08393デフォルトの名無しさん
2010/09/28(火) 17:23:08 jawkがjwalkに見えてしまう
394デフォルトの名無しさん
2010/10/01(金) 11:21:26 動く環境の多さ順にインタプリタを選ぶんなら、
シェルスクリプト > awk >>> perl >>>>> python >>>>> ruby >>> haskel etc.
となるだろうな。
シェルスクリプトはシェル依存な部分が多く、perl ほど高機能なものも要らない。
そんな時、小さな端末でもスマートに動いてくれる awk にちんこ勃つ。
>>389
言語に捨てるも拾うもないよ。その時々に都合の良いものを組み合わせて使うのがUNIX的な発想。
シェルスクリプト > awk >>> perl >>>>> python >>>>> ruby >>> haskel etc.
となるだろうな。
シェルスクリプトはシェル依存な部分が多く、perl ほど高機能なものも要らない。
そんな時、小さな端末でもスマートに動いてくれる awk にちんこ勃つ。
>>389
言語に捨てるも拾うもないよ。その時々に都合の良いものを組み合わせて使うのがUNIX的な発想。
395デフォルトの名無しさん
2010/10/01(金) 15:33:40 >>394
「一発やろう」ですね!
「一発やろう」ですね!
396デフォルトの名無しさん
2010/10/09(土) 04:40:48 awk最近勉強してる。perlより全然簡単。
これなら俺でも挫折しなくてすみそう
これなら俺でも挫折しなくてすみそう
397デフォルトの名無しさん
2010/10/09(土) 04:57:14 >>396 がんば!
398デフォルトの名無しさん
2010/10/21(木) 20:16:46 sjisで書いた
/ー/{print}
を実行すると
awk:
awk: ^ 正規表現が終端されていません。
awk: 致命的: [ または [^ が対応しません。: /[/{print}/
のエラーになってしまいます。
ーの2バイト目が[なせいだと思いますが、どう対応したらいいでしょうか?
入力ファイルはsjisで書かれていて、文字コード変換はできません。
/ー/{print}
を実行すると
awk:
awk: ^ 正規表現が終端されていません。
awk: 致命的: [ または [^ が対応しません。: /[/{print}/
のエラーになってしまいます。
ーの2バイト目が[なせいだと思いますが、どう対応したらいいでしょうか?
入力ファイルはsjisで書かれていて、文字コード変換はできません。
399デフォルトの名無しさん
2010/10/21(木) 20:55:41 >>398
環境の問題なんだから、実行環境くらいまともに書けよ。
環境の問題なんだから、実行環境くらいまともに書けよ。
400デフォルトの名無しさん
2010/10/21(木) 21:38:24 >>398
gawk を使う
gawk を使う
401デフォルトの名無しさん
2010/10/21(木) 22:52:57 環境はCentOS-5.5-x86_64でGNU Awk 3.1.5です。
/bin/awkはシンボリックリンクで、実体はgawkでした。
/bin/awkはシンボリックリンクで、実体はgawkでした。
402デフォルトの名無しさん
2010/10/21(木) 23:49:35 >>401
--help 嫁
--help 嫁
403デフォルトの名無しさん
2010/10/22(金) 01:41:07 Windows7(64bit)で使えるawkありますか?
404デフォルトの名無しさん
2010/10/22(金) 02:19:30 32bit版のawkをを使うんじゃダメ?
405398
2010/10/22(金) 07:32:34 こうすることで対応できました。
/\x81\[/{print}
/\x81\[/{print}
406デフォルトの名無しさん
2010/10/22(金) 09:41:36 それでいいなら、/ー[]/でもいい希ガス。
根本的な解決になってないけどねぇ。
根本的な解決になってないけどねぇ。
407デフォルトの名無しさん
2010/10/22(金) 13:52:10 シングルクオーテーションやダブルクオーテーションの使い分けじゃね〜
408398
2010/10/22(金) 19:55:53 根本的な解決するとしたら文字コードを変えることでしょうか?
409デフォルトの名無しさん
2010/10/22(金) 20:03:18 日本語の文字コードに対応してるawkを使う、という方法もある。
今あるのかどうか知らないけど。
今あるのかどうか知らないけど。
410デフォルトの名無しさん
2010/10/22(金) 20:28:38 今のgawkは普通にUnicode対応してるみたい
$ echo 'てすと' | gawk '/[ぁ-ん]/ { print length($0) }'
3
UTF-8ロケールでしか試してないけど
cygwinでも大丈夫
$ echo 'てすと' | gawk '/[ぁ-ん]/ { print length($0) }'
3
UTF-8ロケールでしか試してないけど
cygwinでも大丈夫
411デフォルトの名無しさん
2010/10/23(土) 01:29:00 >>404
gawkでいいかな
gawkでいいかな
412399
2010/10/23(土) 06:55:10 >>405
問題は解決したのかもしらんが、一応。
以下2つのWin用バイナリは問題ないので、ソースもらってLinux上でコンパイルしてみたら?
ttp://gnuwin32.sourceforge.net/packages/gawk.htm
ttp://www.kt.rim.or.jp/~kbk/gawk-3.1/
問題は解決したのかもしらんが、一応。
以下2つのWin用バイナリは問題ないので、ソースもらってLinux上でコンパイルしてみたら?
ttp://gnuwin32.sourceforge.net/packages/gawk.htm
ttp://www.kt.rim.or.jp/~kbk/gawk-3.1/
413398
2010/10/23(土) 10:53:14 サーバ管理者じゃないのでサーバをいじることはできないです。
これにしたらsjisでも動くようになるのでしょうか?
これにしたらsjisでも動くようになるのでしょうか?
414デフォルトの名無しさん
2010/10/23(土) 12:27:19 >>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とかにすればいいのかと思ったが、ロケール変更自体がうまくいかなかったわ。
困ってる事があるなら、最終的に何がしたいか言ったほうがいいよ。
少なくとも自分が試した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とかにすればいいのかと思ったが、ロケール変更自体がうまくいかなかったわ。
困ってる事があるなら、最終的に何がしたいか言ったほうがいいよ。
415398
2010/10/23(土) 12:40:31 Windows2003だとちゃんと動くんですね。
困っていたことは405で解決したので大丈夫です。
今は「根本的な解決」に興味があったのでお聞きした次第です。
困っていたことは405で解決したので大丈夫です。
今は「根本的な解決」に興味があったのでお聞きした次第です。
416初心者
2010/11/04(木) 22:14:10 awkでシェルのPATH変数をマッチさせるときにスラッシュ//を使わない方法を教えていただけませんか?
417デフォルトの名無しさん
2010/11/04(木) 23:14:10 >>416
初心者だからマルチが許されるとでも思ったか?
初心者だからマルチが許されるとでも思ったか?
418初心者
2010/11/05(金) 06:32:09 ごめんなさい!
知りませんでした。
知りませんでした。
419デフォルトの名無しさん
2010/12/15(水) 01:54:35 配列の要素数を調べるなら、ループ処理しないと分からない?
length みたいなのは無い?
length みたいなのは無い?
420デフォルトの名無しさん
2010/12/15(水) 02:27:50 あるよ。まさしく、length(array)。
421デフォルトの名無しさん
2010/12/15(水) 02:42:46 そんなもんねぇよ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.
と思ったら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.
422デフォルトの名無しさん
2010/12/15(水) 04:20:37 むしろ配列が存在するってことはその配列を作成する過程があるだろ?
作成するときに数えればいいんじゃね?
作成するときに数えればいいんじゃね?
423デフォルトの名無しさん
2010/12/15(水) 08:40:15 連想配列だったら数えないのが普通だがな
424419
2010/12/25(土) 03:12:23 function で処理する時、配列だけではダメで要素数まで必要なんだかなぁ、
って事が分かりますた
って事が分かりますた
425デフォルトの名無しさん
2010/12/28(火) 11:29:35 function に渡すだけなら要素数なんていらないんじゃない?
426デフォルトの名無しさん
2010/12/28(火) 13:55:13 $1 = $1みたいなトリックを見る度に奥が深いと言うよりは糞に見えてきます
翻すとUNIX文化そのものが
まあ、あくまでおれの主観ですがね
翻すとUNIX文化そのものが
まあ、あくまでおれの主観ですがね
427デフォルトの名無しさん
2010/12/28(火) 15:24:21428デフォルトの名無しさん
2010/12/28(火) 15:28:13 >>427
全角英字使う奴が awk 大好きだとは到底思えん
全角英字使う奴が awk 大好きだとは到底思えん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- 【悲報】タンパク質さん、寿命を縮めることが判明
- 【マギレコ】VIPでマギアレコード&マギアエクセドラ【まどドラ】
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 衛生的に気持ち悪くて性風俗店行ったこと無いんだ
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
