08/07/07 20:45:18 wYmB5VwU
おーくについて語りましょう
2:login:Penguin
08/07/07 20:52:18 7N4CeYxI
awkは言わねえ、たった一行・・・
3:login:Penguin
08/07/07 20:55:08 64cKGfca
オークは便利だオーク
4:login:Penguin
08/07/07 21:21:04 Bjq85S2V
sedファンクラブからきました。
5:login:Penguin
08/07/07 21:35:44 rSMtL5cT
ls -ltr | awk '{print $8}'
6:login:Penguin
08/07/07 21:50:35 XFLIMsgD
aho
wainberg
kernihan
7:login:Penguin
08/07/07 22:39:16 /5MnC3tB
awkでなんでもやるのって年がバレそうだなあ。ちょっと下の世代だとperlだろうし。
8:login:Penguin
08/07/08 00:19:21 9/fi698j
URLリンク(text.world.coocan.jp)
9:login:Penguin
08/07/08 01:19:20 yAMbUEpf
しばらくしたら,perlでなんでもやるのって年がバレそうだなあ。ちょっと下の世代だとpythonだろうし。ってなるんだろうな
10:login:Penguin
08/07/08 10:32:21 YEHCkTi1
下の世代はpythonよりrubyじゃないか?
自分の場合、全部シェルスクリプトだけどw
11:login:Penguin
08/07/08 12:50:38 6brAoz3h
perl->pythonときてawkの便利さに気付いた。
12:login:Penguin
08/07/08 16:47:52 TJw2Mlna
awk, perlユーザだが次はpythonとやらをいじってみるかね
13:login:Penguin
08/07/09 19:51:11 r1P6Mjit
awkを256倍はみなさん持ってます?ここがすべての始まりだったなあ
14:login:Penguin
08/07/09 19:52:45 +TY8Gpg6
オライリーのsed&awkがはじまりだったなあ・・・
んでもってx68kで遊んでいたw
15:login:Penguin
08/07/09 19:55:00 0dhBqlXX
俺はrubyとpython両方使ってる。
rubyはワンライナー~十数行のスクリプト。
pythonは数十行~数百行のスクリプト。
16:login:Penguin
08/07/09 20:03:27 Glf+LFW9
そんな昔にawkとかと出会えた人が羨ましい
17:login:Penguin
08/07/09 20:09:52 r1P6Mjit
awk gawk jgawk やっぱり魅力はデータなめさせた時のスピード感
18:login:Penguin
08/07/09 21:59:50 2WqtvhnN
適当なデータをSQLにして流すときとかに使ってる。
BEGIN/ENDのおかげでトランザクション使うのも簡単。
19:login:Penguin
08/07/09 23:40:46 ro47ZQt4
>>14
「プログラミング言語AWK」が絶版になると聞いてあわてて確保したが、すぐ再版された。
20:login:Penguin
08/07/20 12:21:50 j9YcHbCn
awk がなくなると困る・・・・・
Perlで$3 を表示しる!とかどーすんよ
awk '{print $3}'
21:login:Penguin
08/07/20 12:31:10 /rTvaqQG
オークについて、おおくは語らねぇ
22:login:Penguin
08/07/20 13:45:48 ysRQGfiQ
>>20
perl -ane 'print $F[2], "\n"'でいいんじゃね?
23:login:Penguin
08/07/20 22:40:15 3uxKU7IE
>>22
なんかこう、Perlってスクリプトにエレガントさを感じないんだよな。つぎはぎが多い
というか。
awkの場合、cに近いスタイルでありながらパターンマッチングとか連想配列の実装が
エレガントだからコードを見ててきれいに感じる。
24:login:Penguin
08/07/20 23:32:42 j9YcHbCn
>>22 マジレス ㌧㌧ ちょっとやってみる(ヲイ
25:login:Penguin
08/07/21 04:31:14 RBm9osMs
perl の -n は各行に対しての処理、-e はスクリプトをファイルでなくその場でワンライナー書く為のものだが
-a オプションはやっぱり awk の名に由来するのかねぇ
26:login:Penguin
08/07/21 10:22:28 m3jpUYR9
>>25
autosplit modeってusageに書いてあるじゃん。
27:login:Penguin
08/07/22 11:02:10 oOCbPgMu
>26
いや名目上はそうだけどさ。
スクリプトでauto~なんて言い出したらキリが無いワケじゃん。
ぶっちゃけ -n だって自動ループと言っちゃえばそうだし。
そこで -s や -p みたいな名前じゃなくて
わざわざ -a にしたのは、やっぱ awk の名を意識したからなのかな、と
思ったんだよ。
28:login:Penguin
08/08/17 18:47:40 AZ0h4M4q
ruby -ne 'puts split[2]'のほうが楽、と思ったけど
空行とかでの扱い考えると
ruby -ne 'puts split[2] || ""'
になるのか。やっぱawkが楽だな。
29:login:Penguin
08/12/03 10:54:22 QXJz0hBL
sedのスレとかあったので、思わず「なんでawkを使わない?」って突っ込んでしまったけど、
実はおれも長らくsedからawkへ行けなかった。田中さん(緑のSerrow)が月刊asciiに書いた
記事を読んで使えるようになったのだった。
いまではperlも使うが、やはりawkが楽だなぁ。16進→10進変換の関数作ったり、
バイナリデータ読むためのコードをCで作ったりして無理やり使ってたころが
懐かしい。
30:login:Penguin
08/12/03 23:47:03 Thw8Gp7O
2年くらい前からLinuxを本格的に使い始めたけど
awk(gawk)とsedには特に力を入れて勉強してる
gawkは機能が洗練されて美しいし直感的で使いやすい
リファレンスもとてもしっかりしてる
31:login:Penguin
08/12/09 16:01:43 NHdcSNGH
おれが一番よく使うのは連想配列。
gawk '{w[$1]++;}END{for(i in w)print i,w[i];}' xxxx.txt | sort
みたいなことを何百回やったことか。
32:login:Penguin
09/04/21 01:25:03 8RfnrYFS
わらうw
URLリンク(awk.info)
object_variable = class_name.new[(optional parameters)]
object_variable.method_name(parameters)
object_variable.delete
33:login:Penguin
09/04/21 17:02:32 CHFddJcj
みなさん教えて下さい。
一行毎に読み込み@<と@>で囲まれた部分を
ランダムなアルファベット10文字に置換し、
元々@<@>に囲まれた部分の文字列と置換したランダムな文字列の対応を
別ファイルに書き出し
っていうのをやりたいです。
awkとsedでできるの?
pythonで書くべき?
34:login:Penguin
09/04/21 18:09:12 68A2ZTzG
できるっちゃーできるが、おすすめはしない。
BEGIN {
output = "hoge.txt"
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
len = length(chars)
srand()
}
{
if(match($0, /@<.*@>/)){
t = substr($0, RSTART+2, RLENGTH-4)
if(!(t in m)) m[t] = rndstr(10)
$0 = substr($0, 1, RSTART+1) m[t] substr($0, RSTART+RLENGTH-2)
}
}
END {
for(i in m) print i, m[i] > output
}
function rndstr(n, s){
while(n--) s = s substr(chars, int(rand()*len)+1, 1)
return s
}
35:login:Penguin
09/05/08 21:56:17 uniCaTc9
まじぽかのUMAちゃんは最高にかわいいNE!
36:login:Penguin
09/07/08 17:12:37 nwzD2hQJ
printfと$ / $がうまく両立できない・・・
文型向け授業でわざわざlinux使わせるなよ・・・
37:login:Penguin
09/07/14 15:14:45 OYRFUc74
やっぱAWKいいよねー
「プログラミング言語AWK」は買い逃してたんで再販速攻で買ったよ。
Excelなんてやってられねーっつーの
38:login:Penguin
09/07/14 15:45:04 ZhPQ90qn
>>37
Excelのvlookupみたいなリレーショナルな事がやりたい場合ってどーしてる?
39:login:Penguin
09/07/16 23:17:47 up+KJ4E4
連想配列でいいんちゃうん?
40:login:Penguin
09/07/18 04:58:19 p/gu39Bx
いやさ、複数のシートから引っ張ってくるような感じで、複数のテキストファイルを対象にしたい時。
41:login:Penguin
09/07/18 15:26:29 VCKoFo8D
そんなん普通に複数ファイル処理すればいいやん。
42:login:Penguin
09/07/18 16:20:59 p/gu39Bx
>>41
> そんなん普通に複数ファイル処理すればいいやん。
「普通に」の所kwsk
43:login:Penguin
09/07/18 21:51:54 VCKoFo8D
getlineすりゃえーやろ
44:login:Penguin
09/07/19 04:55:45 TalGZSOR
awk初心者です。質問させてください。
awkでアクセスカウンタを作ろうと思い、
以下のようなスクリプトを書いたのですが、
最後のhtmlへの出力(表示)の方法がわかりません。
どうしたらいいのでしょうか?
45:44
09/07/19 04:57:30 TalGZSOR
BEGIN{
#プロセスロック
lock()
#カウント数の読み込み
while (getline < count.dat > 0){
before_count = $1;
}
close(count.dat);
#カウントを1進める
new_count = before_count + 1;
#数字の置換を行う
sub(before_count, new_count, $1);
#プロセスロック解除
unlock()
}
46:44
09/07/19 04:58:33 TalGZSOR
print "Context-Type: text/text";
print "\r";
END{
#表示テンプレートの読み込み
while (getline < count.txt > 0){
txt_file[++i] = $0;
}
close(count.txt);
#あらかじめセットしてあるテンプレート上の文字列を置換
gsub("<!--#count.cgi--!>", new_count, $0);
print $0;
}
47:login:Penguin
09/07/19 11:16:35 xa/YVpR4
>>43
getline知らなかったわ。
難しそうだな・・・
48:login:Penguin
09/07/19 15:13:23 Ge8Nt7Pt
>>44
SSIの仕組みは理解できていますか。
URLリンク(httpd.apache.org)
49:hogehoge
09/07/21 14:50:51 PUGBjRE4
getline は毎回リファレンス見に行ってるなぁ
頭が劣化しとるわー
50:login:Penguin
09/08/01 15:31:08 z6H8O5Sr
こんなものが落ちてたw
URLリンク(mitya.pp.ru)
51:login:Penguin
09/08/15 20:33:21 7GY0b2Yy
Mac OS X Leopard 10.5.8でjgawkを使いたいのです。
ターミナルでawk '{print $0}' filenameですと日本語が悲しいです。
お使いのみなさん、使用法等教えて下さい。
52:login:Penguin
09/08/19 18:02:30 GJ3CGMhT
板違い。
53:login:Penguin
09/08/22 09:19:23 rmix/tng
Mac OS XをUnixとして使ってる人の為のスレ その15
スレリンク(mac板)
こっちのが詳しいかもね
54:正月前
09/12/29 22:19:45 UAwxD9+5
awk初心者です。
awkにはperlのjoinみたいの関数ありますか?
perl:
print join(":",$_);
55:login:Penguin
09/12/30 01:06:12 Q1gMau4C
データ集計に便利
56:login:Penguin
09/12/30 01:44:22 jMgIWDpO
>>54
BEGIN {OFS=":"}{$1=$1;print}
57:正月前
09/12/31 16:45:37 z/pUNj8p
重複を削除するBASHスクリプトに、perlの部分はawkの連想配列で書き換えたいんですが、splitした後の処理方法が分かりません
教えて頂ければ幸いです。
-----------------------------
hoge='a:b:c:d:a:b:c:d:a'
echo -n $hoge | perl -F: -ane 'chop;foreach(@F){$s{$_}++ or push(@b,$_)}print join(":",@b)'
-----------------------------
58:login:Penguin
10/01/05 11:48:18 iQ1ypvd/
素人なりですけど
echo -n $hoge | awk 'BEGIN{OFS=":"}{n=split($0,a,":");m=1;for(i=1;i<=n;i++){if(!(a[i]in b)){$m=a[i];b[$m]++;m++}}print}'
59:login:Penguin
10/01/05 12:34:43 APedkSZb
echo -n $hoge | awk 'a[$0]++<1{printf(NR>1?RS:_)$0}' RS=:
60:login:Penguin
10/01/05 12:50:31 APedkSZb
a[$0]++<1 じゃなくて
!a[$0]++ とした方が1バイト短くなるな
って、そういう趣旨じゃないか
61:login:Penguin
10/01/08 21:03:31 pPQjxZAI
プログラミングAWK 3度目の復刊
URLリンク(www.fukkan.com)
62:正月前
10/01/11 22:20:00 jx5sxsA2
>>58,59,60
ご回答、誠に有難うございました!
まだawkの部分理解してないけど、期待通りの動作が確認できました!
63:login:Penguin
10/03/16 14:08:38 hRXCRI1I
Linuxじゃないんですが、Gawk on Windowsだと、
gawk '{print $1;}' data.txt
ていうのは、クォーテーションはダブルにしないといけないんですね。。。
64:login:Penguin
10/03/16 14:27:11 OV90ZKd/
うん、引数文字列をどう解釈するかは awk じゃなくてシェルだから。
cmd.exe の仕様の問題であって、awk の側では対応しようにもできない。
65:login:Penguin
10/05/14 13:36:36 XjQaHos9
BEGIN {
printf "256倍のコードが提供されてる\n"
printf "URLリンク(books.ascii.jp) にアクセス\n"
printf "本には4756101623なんてのがついてるけど、本の通りに入れるとnot found\n"
}
END {
print "昔と本の内容が変わってるみたいだな"
}
66:login:Penguin
10/05/14 21:49:15 KfNsslph
END {
print "まだ始まってもねーよっ!"
}
BEGIN {
printf "・・・ごめ・・・\n"
}