元スレ
1 :login:Penguin:2008/07/07(月) 20:45:18 ID:wYmB5VwU.net
おーくについて語りましょう
20 :login:Penguin:2008/07/20(日) 12:21:50 ID:j9YcHbCn.net
awk がなくなると困る・・・・・
Perlで$3 を表示しる!とかどーすんよ
awk ‘{print $3}’
23 :login:Penguin:2008/07/20(日) 22:40:15 ID:3uxKU7IE.net
>>22
なんかこう、Perlってスクリプトにエレガントさを感じないんだよな。つぎはぎが多い
というか。
awkの場合、cに近いスタイルでありながらパターンマッチングとか連想配列の実装が
エレガントだからコードを見ててきれいに感じる。
110 :login:Penguin:2011/06/05(日) 10:44:14.22 ID:3GXVErWF.net
awk /./
の7文字だけでOK
RSは初期値が入ってるんだから
225 :login:Penguin:2017/12/29(金) 14:37:58.78 ID:S/CsVkMC.net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
DCQTVO9E2N
75 :login:Penguin:2011/02/11(金) 21:58:36 ID:W6G44msP.net
115 :login:Penguin:2011/06/08(水) 00:28:22.25 ID:AGBbsX8a.net
速くて短いし、そっちのがコードと意味が一致するかと
3 :login:Penguin:2008/07/07(月) 20:55:08 ID:64cKGfca.net
122 :login:Penguin:2011/06/13(月) 22:57:31.80 ID:0YRj9/YK.net
いや、しかし最近目から鱗落ちまくりです。沢山の書き込みに感謝感謝。
33 :login:Penguin:2009/04/21(火) 17:02:32 ID:CHFddJcj.net
みなさん教えて下さい。
一行毎に読み込み@<と@>で囲まれた部分を
ランダムなアルファベット10文字に置換し、
元々@<@>に囲まれた部分の文字列と置換したランダムな文字列の対応を
別ファイルに書き出し
っていうのをやりたいです。
awkとsedでできるの?
pythonで書くべき?
76 :login:Penguin:2011/05/24(火) 19:21:38.77 ID:iwctpm7O.net
157 :login:Penguin:2011/07/09(土) 19:07:48.49 ID:OcQSMVqG.net
>>153
ホント?Delphiなんて懐かしいなぁ。GUIでなく、Webでの利用なら、もはやOSあまり関係ないような気も。よく分からん。
>>155
聞いたことはあるけど、見たことはない程度には珍しいかと。gawkはネットに対応してるから頑張ればサーバにもなれるかな?
163 :login:Penguin:2011/07/14(木) 01:48:17.88 ID:I04Pjvnw.net
>>134
これを使って正規表現によって grep とどれだけ実行速度に差が出るのか計ってみた。
ttp://pastebin.com/bpXZ5pg8
数字だけではよく分からないので、ユーザ時間のグラフを描いた。
ttp://i53.tinypic.com/303a4iv.jpg
赤がawk、青がgrep
こっちじゃないと見れないかも → ttp://tinypic.com/r/303a4iv/7
awk もばらつきがあるけど、grep ほどではない。
どちらも、マッチする可能性が高い正規表現は遅くなる傾向があるのかなぁ?
106 :login:Penguin:2011/06/05(日) 08:10:41.12 ID:SucWQMoo.net
RSが空だとRS=¥n+として解釈されるんじゃまいか
32 :login:Penguin:2009/04/21(火) 01:25:03 ID:8RfnrYFS.net
わらうw
ttp://awk.info/?doc/dsl/awkplusplus.html
object_variable = class_name.new[(optional parameters)]
object_variable.method_name(parameters)
object_variable.delete
78 :login:Penguin:2011/05/24(火) 19:52:09.13 ID:WxByEtFQ.net
自分は
match($0, /http:¥/¥/[^ ]+/, f)
を使う気がする。
143 :login:Penguin:2011/07/08(金) 17:42:07.69 ID:baIcylwh.net
>>142
BEGIN{for(;i<256;++i)c[t=sprintf(“%c”,i)]= i==32?”+”:t‾/[0-9A-Za-z]/?t:”%”sprintf(“%x”,i)}
{for(s=i=””;i++<length;s=s c[substr($0,i,1)]); print s}
マルチバイト対応してて length() とか substr() とかが
バイト数ではなく文字数を数えて動作するような小賢しい awk だと逆に動かない。
11 :login:Penguin:2008/07/08(火) 12:50:38 ID:6brAoz3h.net
perl->pythonときてawkの便利さに気付いた。
150 :login:Penguin:2011/07/09(土) 15:37:05.06 ID:Q3LPccup.net
awkオンリーってのがムズイので、Cygwin上でsh他外部コマンドと組み合わせて使う事が多い
29 :login:Penguin:2008/12/03(水) 10:54:22 ID:QXJz0hBL.net
sedのスレとかあったので、思わず「なんでawkを使わない?」って突っ込んでしまったけど、
実はおれも長らくsedからawkへ行けなかった。田中さん(緑のSerrow)が月刊asciiに書いた
記事を読んで使えるようになったのだった。
いまではperlも使うが、やはりawkが楽だなぁ。16進→10進変換の関数作ったり、
バイナリデータ読むためのコードをCで作ったりして無理やり使ってたころが
懐かしい。
178 :172:2011/08/21(日) 22:01:39.45 ID:Mb9j323G.net
自己レスです。
BEGIN { FPAT = “([^” FS “]+)|(¥”[^¥”]+¥”)” }
みたいな事をしました。
71 :login:Penguin:2010/11/04(木) 23:15:07 ID:mFaq3KZr.net
41 :login:Penguin:2009/07/18(土) 15:26:29 ID:VCKoFo8D.net
49 :hogehoge:2009/07/21(火) 14:50:51 ID:PUGBjRE4.net
getline は毎回リファレンス見に行ってるなぁ
頭が劣化しとるわー
135 :login:Penguin:2011/07/01(金) 23:56:01.08 ID:NsJJwAAV.net
時間計測の結果を追記。
time grep -C 500 ‘public class¥|jar cf¥|javac¥|¥.java’ <strings_a.txt >/dev/null
real 0m2.112s
user 0m1.528s
sys 0m0.311s
time awk ‘BEGIN{ L=500;(略)}; /public class|jar cf|javac|¥.java/{(略)}; n++<=L’ <strings_a.txt >/dev/null
real 1m20.089s
user 1m15.426s
sys 0m0.389s
一回計測。約50倍くらい遅いか。ネイティブとスクリプトだから、まあこうなる、と言ったところだと思う。
短い処理なら有利な場合もあるんだろうけど。
14 :login:Penguin:2008/07/09(水) 19:52:45 ID:+TY8Gpg6.net
オライリーのsed&awkがはじまりだったなあ・・・
んでもってx68kで遊んでいたw
200 :login:Penguin:2013/03/20(水) 12:52:31.89 ID:YjhinaPB.net
165 :login:Penguin:2011/07/15(金) 08:26:42.31 ID:ZNSgasJH.net
86 :login:Penguin:2011/06/02(木) 03:19:02.91 ID:LRv8LU2q.net
入力からランダムで1行表示する
awk ‘{ l[i++]=$0 }; END{ srand(); print l[int(i*rand())] }’
シェルスクリプトの方が短いか?
139 :login:Penguin:2011/07/07(木) 02:54:29.78 ID:bHkfWT8R.net
md5sumコマンドの出力から重複するMD5チェックサムを持つファイルを列挙する
awk ‘{ i=++a[$1,0]; a[$1,i]=$0 }; END{ for (i in a) if (!k[split(i,k,SUBSEP)] && a[i]>1) for (j=1; j<=a[i]; j++) print a[k[1],j] }’
まだ短く書けそうかな?
あるディレクトリ以下を調べるなら、こんな感じでMD5チェックサムを計算する。
find sda6.photorec -type f -exec md5sum ‘{}’ +
この出力をパイプか何かで食わせればいい。
gawkの4.0が出たか。いろんな亜種を使う機会があるから、なかなか依存したプログラムは書けないね。
よく使うのはgawkとmawkだけど、皆何をよく使ってるのだろう?使用者が少ないから余計に気になる。
デバッガって使いやすい?いまだにprintで表示してやってるなぁ。
81 :login:Penguin:2011/05/24(火) 23:22:37.43 ID:Rb7jhN0u.net
うちは>>77の条件を index($i, “http:”) == 1 で書くだろうなぁ
でも、処理内容がそれだけなら sed -n ‘s/^.*¥(http:[^ ]*¥).*$/¥1/p’ だなぁ
避けられるなら正規表現は避けたほうが速いんじゃないかと思ってる
133 :login:Penguin:2011/07/01(金) 01:20:48.84 ID:NsJJwAAV.net
xgawkは使ってないなぁ。使ってる鳥には無いし。XHTMLが対象ならもっと短く書けるのだろうか。
>>130
おー!これはクール。
gawkは大文字小文字無視する処理書くの楽だね。流石だ。
>>131
前後の行を表示させたりが楽かも。まあ、滅多にお世話になることないけど…
rm -r *でデータ飛ばしたから、そのサルベージに役立つとは…orz
187 :login:Penguin:2011/11/29(火) 01:04:03.02 ID:6tCpTQmb.net
ごめん、
awk ‘{if (match($0,”href=¥”([0-9]{4}-[0-9][0-9]-[0-9][0-9])¥””,a)) print a[1]}’
101 :login:Penguin:2011/06/04(土) 12:42:54.20 ID:HzZByxDX.net
複数のtimeコマンドの出力から平均を求める
awk -Fm ‘{ a[$1]+=$2; a[0,$1]++ }; END{ for(i in a) if(i‾/^[rus]/) printf “%sm%.3fs¥n”,i,a[i]/a[0,i] }’
昨日の時間計測のために書いた。
いろいろ問題あり。これ以上短くかけなかった、残念だわ。
sedがすっごい遅いので全部メモリに読み込んで処理させてみた。
time cat src.txt |sed -n ‘1x;1!H;${x;s/¥n¥n¥+/¥n/gp}’ >/dev/null
real 0m24.515s
user 0m18.584s
sys 0m2.005s
# ちなみに、昨日のも含めて3回試した結果を平均した
…やっぱ遅い。GNU sedが悪いの?スレ的に満足な結果だけど。
便利で速くてシンプルなのに、あまり使われない紹介されない、消え行くawk、カワイソス
102 :login:Penguin:2011/06/04(土) 13:21:18.28 ID:El9DLlK0.net
フィールドを抜き出すワンライナーはやっぱawkでしょ
perl -pae’$_=$F[8].$/’
ruby -nae’puts$F[8]’
awk ‘print$9’
152 :login:Penguin:2011/07/09(土) 17:38:27.04 ID:OcQSMVqG.net
そうか、Windowsでの使用率は考えたことなかったわ。そっちで今何が流行ってるのかは知らないけど、
GUI扱うライブラリを持つLLが使われてそうだ。こればかりは厳しい。そもそも、ライブラリって概念がないのが避けられてるのかな。
162 :login:Penguin:2011/07/11(月) 00:10:26.11 ID:ShNAK0f0.net
個人的にはawkは今まで通りシェルのお供でいいと思う
perlとかでもそりゃ書けんことは無いが
シェルのお供として使うには微妙に違和感あるんだよな〜
210 :login:Penguin:2015/01/24(土) 12:11:48.77 ID:4AXaMrRk.net
55 :login:Penguin:2009/12/30(水) 01:06:12 ID:Q1gMau4C.net
130 :login:Penguin:2011/06/16(木) 10:18:36.69 ID:x2P5GNsY.net
>>129
gawk ‘$0=gensub(“</?title>”, “”, “g”, RT)’ RS='<title>.*</title>’ IGNORECASE=1
158 :login:Penguin:2011/07/09(土) 19:58:21.74 ID:Ne909y4H.net
>>157
いやまあDelphiは新規としては瀕死で、過去遺産の保守で使われるのが主だけどね。
22 :login:Penguin:2008/07/20(日) 13:45:48 ID:ysRQGfiQ.net
>>20
perl -ane ‘print $F[2], “¥n”‘でいいんじゃね?
2 :login:Penguin:2008/07/07(月) 20:52:18 ID:7N4CeYxI.net
26 :login:Penguin:2008/07/21(月) 10:22:28 ID:m3jpUYR9.net
>>25
autosplit modeってusageに書いてあるじゃん。
117 :login:Penguin:2011/06/08(水) 06:42:33.45 ID:3juXEiES.net
上だと¥n¥rになっちゃうけど
CRLFの¥r¥nとは違うから
Windowsでは認識しないのでは?
103 :login:Penguin:2011/06/05(日) 00:51:57.16 ID:kp3qNbsC.net
>>95の表記初めて見た
このスレの住民にはこれくらい当たり前なのか…
147 :login:Penguin:2011/07/09(土) 07:11:28.80 ID:OcQSMVqG.net
このスレ七夕に立ってたのか。3周年って言われると、まだ3年かと思ってしまう。
3年前といえばLLが盛り上がってた頃だから、もう少し前に立ってればここももっと盛り上がっていたかもね。
gawkは新しくなったけど、確実に他のLLに流れてるよなぁ…
148 :login:Penguin:2011/07/09(土) 07:34:21.50 ID:OcQSMVqG.net
>>145
どこぞのOSでは使えない文字をわざわざファイル名に使わないよねって思い、楽してます。
ただパスに含まれる可能性はあるので、そういった場合は file -F; のようにして
fileコマンドの使うセパレータを(使われていない)任意の文字に設定して下さい。
スタイルに関しては全くその通りで、自分でも冗長だと思いつつ残しています。以下言い訳…
スペースは読み辛くなると思う所にだけ残すようにしています。また、ここに貼ると、
表示がプロポーショナルフォントになって、幅が狭い文字の隣から一部分コピペする操作をよくミスるため、
そういった幅の狭い文字(}とか;)の後には残しています。
ifやwhileの後、print $1 や “a” b “c” に含まれるものも省略できますが、違和感が物凄いので残しています。
セミコロンは(POSIXの仕様で)必要なものだけを残しているつもりです。
過去の互換性のために省略可能なものは、残すようにしています。
48 :login:Penguin:2009/07/19(日) 15:13:23 ID:Ge8Nt7Pt.net
>>44
SSIの仕組みは理解できていますか。
ttp://httpd.apache.org/docs/2.0/ja/howto/ssi.html
175 :login:Penguin:2011/08/21(日) 18:56:18.08 ID:Fst2eXVD.net
>>172
それ、CSVとかでもよく語られることだけど、意外と面倒なのよ。
例えば「”」自体を文字列に入れたい場合はどうするのか、とか色々決めなきゃならんし。
138 :login:Penguin:2011/07/06(水) 07:36:41.51 ID:Q5KmFo/I.net
レスを投稿する(名前省略可)