awk ファンクラブ
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
2008/07/07(月) 20:45:18ID:wYmB5VwU0110login:Penguin
2011/06/05(日) 10:44:14.22ID:3GXVErWFの7文字だけでOK
RSは初期値が入ってるんだから
0111login:Penguin
2011/06/05(日) 14:48:51.10ID:jNueNt7Q0112login:Penguin
2011/06/05(日) 19:30:13.18ID:Tq0aYVo2書き忘れ。
RS=""のとき、ファイルの末尾の改行も無視する。
あと、FSが"\n"に設定されているように振舞う。
元々複数行を一気に処理したい場合に使うことを想定してたのだろう。
>>110
ああ、すごい、これは短い!頭柔らかいねえ、スマートだわ。
夢の中でも考えたのに…無能過ぎワラタ
>>111
grep最強伝説はっじまっ…らないぞ。同じ方法で時間計測したら2時間半たっても終わらない。
grep捨ててawkを使おう!
0113login:Penguin
2011/06/05(日) 20:13:50.57ID:k4Gl3aKk0114login:Penguin
2011/06/07(火) 23:28:39.30ID:pixJYa/Gawk '{ print $0 "\r" }'
こっちの方が速くて短いか。
awk 1 ORS='\r\n'
0115login:Penguin
2011/06/08(水) 00:28:22.25ID:AGBbsX8a0116login:Penguin
2011/06/08(水) 01:01:03.76ID:48mfCmU6下のは、awkがどう動くかを知ってないと気持ち悪い感じ。
101みたいなsedスクリプトを、初めて見たときのような。
0117login:Penguin
2011/06/08(水) 06:42:33.45ID:3juXEiESCRLFの\r\nとは違うから
Windowsでは認識しないのでは?
0118login:Penguin
2011/06/08(水) 12:16:04.61ID:AGBbsX8aいや、上のコードは\rが先に出力されるからあってるよ、改行じゃなくて普通の可読文字でためしてみ
0119login:Penguin
2011/06/09(木) 23:01:35.59ID:b4gs0WW2awk 1 RS=\\r ORS=
改行弄ったら戻したいよね。一文字多い別解。
awk 'sub(/\r/,"")'
>>117
$0にRSは含まれない。print文での出力のときにORSが付けられる。
だから、114のような書き方ができるのです。
え?素直にnkfとかtr使うべきだって?ごめんちゃい。
tr -d \\r
nkf -d
短いねえ…そして速そう…
0120login:Penguin
2011/06/12(日) 23:20:31.21ID:8N8UbY4vawk 'gsub(/foo/,"bar")'
sedで書くとこうか。
sed -n 's/foo/bar/gp'
こういう処理はsedの方が楽に書けるのかな、うーん。
>>119
awk 'sub(/\r/,"")+1'
下はこの方が良かった。うっかりファイルの内容を消してしまいそうだ。
0121login:Penguin
2011/06/13(月) 19:11:34.42ID:NkVjy07h逆にそれ以外のツールでもスクリプトでもなく、awkで書きたくなるのはフィールドを使うものかな
0122login:Penguin
2011/06/13(月) 22:57:31.80ID:0YRj9/YK0123login:Penguin
2011/06/14(火) 21:28:05.61ID:ODOs6IfG置換はsedとかtr
結合はcatとかpaste
計算はexprとか場合によりwc
多少組み合わせる必要があるならshでシェルスクリプトwhile、for、read、shiftみたいな
大抵やりたいことに対応するコマンドがある。awkでプログラム風に書くのは人を選ぶのかもね。
このスレが太古の昔に沈んでしまったのも、そのせいか。
実際、プログラム板にもあるけど、あちらはそこそこ書き込みがある。
Linuxも既にGUI全盛、バッチ処理もGUIでという流れか、シェルスクリプト総合スレもなくなってしまったし。
板全体がほとんど動作報告中心になって、Linuxやシステム全体のコアな部分、プログラミングの話題を
話す場所が消えてしまったような気がする。気がするだけ。
0124login:Penguin
2011/06/14(火) 23:04:41.82ID:CILjaNiqLinuxでメジャーなシェルは大概BSDとかでも使えるし
0125login:Penguin
2011/06/15(水) 21:26:33.76ID:QLTzRiMxawk '/<title>/{ b=1 }; b{ s=s $0 RS }; /<\/title>/{ gsub(/.*<title>|<\/title>.*/,"",s); print s; exit }'
分かりやすさと効率を無視、短さを優先した別解。
awk '{ s=t=s $0 RS }; gsub(/.*<title>|<\/title>.*/,"",t)>1{ print t; exit }'
どっかのスレにて、出遅れ、荒れ気味なので。
改行も保存してるけど、必要ないならRSを除けばいい。
perlの無いシステムでもawkはある!はず。
いつの間にかUnix板のシェルスクリプトスレまで無くなってやがる…
0126login:Penguin
2011/06/15(水) 22:50:13.28ID:QFQ0PbYI0127login:Penguin
2011/06/16(木) 00:11:48.62ID:oqM9OV4C0128login:Penguin
2011/06/16(木) 00:29:05.98ID:G4IIl/GQスレ建てた事無いから分からないけど、最近建て難いようだし、そのせいかな。
112で諦めたgrepで空行を削除する処理の時間計測の結果。
time cat src.txt |grep . >/dev/null
real 342m52.646s
user 337m34.249s
sys 0m7.174s
grep -V
GNU grep 2.6.3
寝て起きたら終わっていた。余程grepを必要とするときくらいしか、使うべきじゃない。
# 一つのケースでしかないのだけどね。ただ、これほど遅いとは…
0129login:Penguin
2011/06/16(木) 09:39:38.00ID:iftKRWTEそれ、xgawkで書くとどんなになるの?
0130login:Penguin
2011/06/16(木) 10:18:36.69ID:x2P5GNsYgawk '$0=gensub("</?title>", "", "g", RT)' RS='<title>.*</title>' IGNORECASE=1
0131login:Penguin
2011/06/19(日) 18:13:12.21ID:O1oYVV5e待てよ…awkでもパターン検索だけなら遜色なく書けて
かつawkのが速いんじゃ、grepの存在価値って…
ああ、複数ファイルからの検索があるか
つーても、これもawkでFILENAMEとFNR明示したら書けちゃうか…
0132login:Penguin
2011/06/20(月) 00:28:57.29ID:rO0fE487まあgrepで済む物は記述が簡単なわけで。
0133login:Penguin
2011/07/01(金) 01:20:48.84ID:NsJJwAAV>>130
おー!これはクール。
gawkは大文字小文字無視する処理書くの楽だね。流石だ。
>>131
前後の行を表示させたりが楽かも。まあ、滅多にお世話になることないけど…
rm -r *でデータ飛ばしたから、そのサルベージに役立つとは…orz
0134login:Penguin
2011/07/01(金) 02:00:56.40ID:NsJJwAAVawk 'BEGIN{ L=N; b=L+1; n=L+2; i=j=0; s=2 };
/regex/{ if (L&&s==1) print "--"; while (i!=j) { print a[i++]; if (i==b) i=0 } n=s=0 };
n>L{ a[j++]=$0; if (j==b) j=0; if (i==j) { i++; if (i==b) i=0; if (!s) s++ } next }; n++<=L'
書けた!!データ飛ばすは、アク禁に巻き込まれるは散々だった。よく見たら凄い遅レスだ…
データのサルベージに使ったgrep -Cを書いてみた。流石にワンライナーとは言い難い。
効率はもう少し良くできそうだけど、これ以上短くするのは無理だった。実力が足りない;_;
あまりに読み辛いので、pastebinに整形版を置いておきます。
ttp://pastebin.com/PJ2VfqN4
0135login:Penguin
2011/07/01(金) 23:56:01.08ID:NsJJwAAVtime 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倍くらい遅いか。ネイティブとスクリプトだから、まあこうなる、と言ったところだと思う。
短い処理なら有利な場合もあるんだろうけど。
0136login:Penguin
2011/07/04(月) 00:51:55.26ID:Zh/tRXtGawk 'f!=FILENAME && /regex/{ print f=FILENAME }'
gawkならこう書ける。
awk '/regex/{ print FILENAME; nextfile }'
>>131に近い。FNRも使って検索結果を表示するスクリプトも、あまり複雑にはならなそう。
下の方が速いけど、mawkだとnextfileをサポートしてなかった。
grep -lと同じ結果で、指定する正規表現によってawkの方が速く動くこともあるよ。
0137login:Penguin
2011/07/05(火) 00:27:00.04ID:iZUKjs1Phttp://sourceforge.jp/magazine/11/07/04/0459223
0138login:Penguin
2011/07/06(水) 07:36:41.51ID:Q5KmFo/I0139login:Penguin
2011/07/07(木) 02:54:29.78ID:bHkfWT8Rawk '{ 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で表示してやってるなぁ。
0140login:Penguin
2011/07/07(木) 11:14:47.64ID:WpiH6Omg0141login:Penguin
2011/07/08(金) 00:37:18.45ID:gfdD9pMCawk '{ q=$1; $1="" }; /text/{ print q }' -F:
FSは-Fオプションを使って1文字短く書く。使い方は次のようにパイプでつなぐ。
find sda6.photorec -type f -exec file '{}' + |awk '{ q="'\''" $1 "'\''"; $1="" }; /text/{ print q }' -F: |xargs -i cp -v "{}" sda6.photorec.text/
xargsに渡すためクォートしてる。ワンラインにシングルクォーテーション入ると書きづらい。
でも、こういう処理はawkが一番楽だね。
>>140
へー、それは良いね!って思ったけど自分が書くような短いスクリプトには不要かも…
今、awkでデバッガが重宝するような長いスクリプトって、どれほど書かれてるんだろう?
0142login:Penguin
2011/07/08(金) 17:00:09.91ID:Iqd7ejAo0143login:Penguin
2011/07/08(金) 17:42:07.69ID:baIcylwhBEGIN{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 だと逆に動かない。
0144login:Penguin
2011/07/08(金) 19:08:55.72ID:gwMiQJC10145login:Penguin
2011/07/08(金) 19:46:11.33ID:CbA9+OJFファイル名には : も使えるから汎用じゃないね。
あとショートコードを意識してるようなのに不必要なセミコロンとカッコ内側のスペースが
あるのはスタイルとして一貫してないな。
0146login:Penguin
2011/07/08(金) 20:31:15.76ID:bJ65EBT80147login:Penguin
2011/07/09(土) 07:11:28.80ID:OcQSMVqG3年前といえばLLが盛り上がってた頃だから、もう少し前に立ってればここももっと盛り上がっていたかもね。
gawkは新しくなったけど、確実に他のLLに流れてるよなぁ…
0148login:Penguin
2011/07/09(土) 07:34:21.50ID:OcQSMVqGどこぞのOSでは使えない文字をわざわざファイル名に使わないよねって思い、楽してます。
ただパスに含まれる可能性はあるので、そういった場合は file -F; のようにして
fileコマンドの使うセパレータを(使われていない)任意の文字に設定して下さい。
スタイルに関しては全くその通りで、自分でも冗長だと思いつつ残しています。以下言い訳…
スペースは読み辛くなると思う所にだけ残すようにしています。また、ここに貼ると、
表示がプロポーショナルフォントになって、幅が狭い文字の隣から一部分コピペする操作をよくミスるため、
そういった幅の狭い文字(}とか;)の後には残しています。
ifやwhileの後、print $1 や "a" b "c" に含まれるものも省略できますが、違和感が物凄いので残しています。
セミコロンは(POSIXの仕様で)必要なものだけを残しているつもりです。
過去の互換性のために省略可能なものは、残すようにしています。
0149login:Penguin
2011/07/09(土) 11:49:25.24ID:Ne909y4H他のLLに比べて、Windowsで使われる頻度が滅法低いのも一因かなあと思う
コマンドプロンプトで awk がやれることって、BEGIN{ } に何か書くぐらいしか無いのよね
だったらPerlとかでいいじゃん、って話になっちゃう
0150login:Penguin
2011/07/09(土) 15:37:05.06ID:Q3LPccup0151login:Penguin
2011/07/09(土) 17:09:11.40ID:Ne909y4H0152login:Penguin
2011/07/09(土) 17:38:27.04ID:OcQSMVqGGUI扱うライブラリを持つLLが使われてそうだ。こればかりは厳しい。そもそも、ライブラリって概念がないのが避けられてるのかな。
0153login:Penguin
2011/07/09(土) 17:45:48.05ID:Ne909y4HいやGUIはほとんどVisualStudio、Java、Delphi辺りで喰われてるよ
その他のGUIツールもあるにはあるんだけど
LLの主な出番は向こうでもテキストフィルタだったりはするんだけど
Windowsにはそもそも組み合わせるような小物のコマンド群が無いから
やりたい処理の1から10まで全部を1個(もしくは一連)のスクリプトで済ませるのが主流
だからたとえLLであっても、1言語で最初から最後までを完結できる大きめの言語が好まれるのよ
awkは単品で使うより、組み合わせで威力を発揮する言語だからか、あまり使われない
0154login:Penguin
2011/07/09(土) 17:49:54.27ID:Ne909y4H0155login:Penguin
2011/07/09(土) 18:38:35.83ID:Q3LPccup0156login:Penguin
2011/07/09(土) 18:59:11.34ID:wbKjo2Ly0157login:Penguin
2011/07/09(土) 19:07:48.49ID:OcQSMVqGホント?Delphiなんて懐かしいなぁ。GUIでなく、Webでの利用なら、もはやOSあまり関係ないような気も。よく分からん。
>>155
聞いたことはあるけど、見たことはない程度には珍しいかと。gawkはネットに対応してるから頑張ればサーバにもなれるかな?
0158login:Penguin
2011/07/09(土) 19:58:21.74ID:Ne909y4HいやまあDelphiは新規としては瀕死で、過去遺産の保守で使われるのが主だけどね。
0159login:Penguin
2011/07/09(土) 20:14:45.59ID:Q3LPccupちなみにgawkのhttpdって、どっかで見たなあ。
0160login:Penguin
2011/07/09(土) 20:57:21.04ID:CG+O7ik7httpに例えるなら、ファイルか404を返すだけの簡単なやつ。
しかもgawkのソケットでなく、inetdから呼ばれるだけの低機能。
0161login:Penguin
2011/07/10(日) 16:44:29.85ID:nBMv6TVB>>160
今更inetdって思ってて、ろくに調べてなかったけど、socatみたいな機能もあるんだね。
ポート監視→サーバ起動って機能しかないと思ってたよ。
これならネット非対応なawkでもhttpdくらい実装できる?…バイナリまともに扱えそうなのはgawkしかねー。
テキストオンリーまでなら何とかできそうだけど、画像も転送できないか。厳しい制限だ。
0162login:Penguin
2011/07/11(月) 00:10:26.11ID:ShNAK0f0perlとかでもそりゃ書けんことは無いが
シェルのお供として使うには微妙に違和感あるんだよな〜
0163login:Penguin
2011/07/14(木) 01:48:17.88ID:I04Pjvnwこれを使って正規表現によって grep とどれだけ実行速度に差が出るのか計ってみた。
ttp://pastebin.com/bpXZ5pg8
数字だけではよく分からないので、ユーザ時間のグラフを描いた。
ttp://i53.tinypic.com/303a4iv.jpg
赤がawk、青がgrep
こっちじゃないと見れないかも → ttp://tinypic.com/r/303a4iv/7
awk もばらつきがあるけど、grep ほどではない。
どちらも、マッチする可能性が高い正規表現は遅くなる傾向があるのかなぁ?
0164login:Penguin
2011/07/14(木) 23:45:53.76ID:I04Pjvnwawk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGV=1};{for(i=0;i<n;++i)if(a[i]~$0)print a[i]}'
最近、用途が限られているもの中心だったので使えそうなワンライナーにしてみたよ。きっと。
指摘を受けたので、スペースは削ることにしました。ちっと見づらい?
↓は大文字小文字を無視するもの。こうするとdmesgの出力を何回も検索できる。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)l[n++]=tolower(a[+n]=$0);close(f);ARGC=1};{for(i=0;i<n;++i)if(l[i]~tolower($0))print a[i]}' <(dmesg)
0165login:Penguin
2011/07/15(金) 08:26:42.31ID:ZNSgasJH0166login:Penguin
2011/07/16(土) 01:01:45.88ID:bjjWiIZ60167login:Penguin
2011/07/16(土) 08:37:16.54ID:n6+rd2ar0168login:Penguin
2011/07/18(月) 15:25:02.07ID:7hj9vKr7>>164の下のスクリプトは次に書き換えてください。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};{for(i=0;i<n;++i)if(tolower(a[i])~tolower($0))print a[i]}'
awkのシーケンスポイントってC言語と同じなのかな…痛いミス。
おまけ。使ってるやつ。エスケープシーケンスを使って見つかった文字列に色を付けた。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};
{for(i=j=0;i<n;++i)if(k=match(tolower(a[i]),tolower($0)))print C(j=!j)I(I(a[i],C(39),k+RLENGTH),C(31),k);print C()};
function C(n){return"\033["n"m"};function I(x,y,z){return substr(x,1,z-1)y substr(x,z)}'
パターンごとに改行を入れた。少し見やすいか?
>>164の上のスクリプトに色を付ける機能を追加。ずっと分かりやすいと思う。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};
{for(i=j=0;i<n;++i){l=a[i];if(sub($0,C(31)"&"C(39),l))print C(j=!j)l}print C()};
function C(n){return"\033["n"m"}'
subをgsubにするとマッチする全ての文字列に色を付けられるよ。
gawkならgensub使ってもう少し短く書けるかもしれない。IGNORECASE=1で簡単に大文字小文字無視できるし。
0169login:Penguin
2011/08/15(月) 19:41:00.75ID:yTTHvZyj0170login:Penguin
2011/08/16(火) 15:17:21.28ID:Tuhp+s5y0171login:Penguin
2011/08/16(火) 15:27:51.45ID:2FR0TK0E0172login:Penguin
2011/08/21(日) 15:15:49.17ID:EL3rN3cwといったレコードを、
field[1]=ふるいけや
field[2]=かわず とびこむ
field[3]=みずのおと
number_of_field = 3
とフィールド分割するすっりした方法を教えて下さい。
0173login:Penguin
2011/08/21(日) 16:45:12.36ID:iSpKRH150174login:Penguin
2011/08/21(日) 18:45:31.99ID:EL3rN3cw0175login:Penguin
2011/08/21(日) 18:56:18.08ID:Fst2eXVDそれ、CSVとかでもよく語られることだけど、意外と面倒なのよ。
例えば「"」自体を文字列に入れたい場合はどうするのか、とか色々決めなきゃならんし。
0176170
2011/08/21(日) 19:12:48.13ID:yoctsNv6ttp://ja.wikibooks.org/wiki/AWK%2B%2B%E3%81%AB%E3%82%88%E3%82%8B%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E5%85%A5%E9%96%80
0177login:Penguin
2011/08/21(日) 19:24:48.22ID:yoctsNv6素直に区切り文字を変えるしか...
ふるいけや,かわず とびこむ,みずのおと
FS=","
0178172
2011/08/21(日) 22:01:39.45ID:Mb9j323GBEGIN { FPAT = "([^" FS "]+)|(\"[^\"]+\")" }
みたいな事をしました。
0179login:Penguin
2011/08/22(月) 10:27:15.81ID:bf5ta6rsRFC4180 互換なフィールド分割オプションを実装すればいいのにといつも思う。
0180login:Penguin
2011/08/22(月) 10:33:38.59ID:uwcmdhh80181login:Penguin
2011/08/22(月) 11:11:08.80ID:4smqF+KA0182login:Penguin
2011/11/28(月) 19:46:48.89ID:NIKBR+N1と同じことをawkでやろうとしているのですがわかりません。
awk -e '/href="(¥d¥d¥d¥d-¥d¥d¥-¥d¥d)"/ { print ??? }'
グルーピングしたあとにそれを取り出す方法を探したのですが、わかりませんでした。
awkまたはsedでのやり方を教えて下さい。
0183login:Penguin
2011/11/28(月) 20:46:46.52ID:skmC2JM9馬鹿じゃないあなたに是非>>182の回答をしてもらおうか。
0184login:Penguin
2011/11/28(月) 21:15:52.48ID:Oo5SGhpXperl がわからないから求めるものがよくわからないけれど、こんな感じ?
awk '/href=\"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\"/ {print $1}' input.html
awk '/href=\"\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\)\"/ {print $1}' input.html
BEGIN とか使ったほうがいいのかもしれないけれど
awk '/href=\"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\"/ {print $1} BEGIN { 何か書く }' input.html
0185login:Penguin
2011/11/28(月) 23:48:15.14ID:mynsjW2oどのawk使っているか分からないし、入力の仕様も分からないけど、どこでも動くのはこんな感じ
awk -F\" '/href=/ { for (i=1; i<=NF; i++) if ($i ~ /href=$/ && $(i+1) ~ /[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/) print $++i }'
gawkでも正規表現パターンのグループを保存している組み込み変数はなかった気がする
0186login:Penguin
2011/11/29(火) 00:49:47.68ID:6tCpTQmbawk '{if (match($0,"href=([0-9]{4}-[0-9][0-9]-[0-9][0-9])",a)) print a[1]}'
じゃ駄目?
0187login:Penguin
2011/11/29(火) 01:04:03.02ID:6tCpTQmbawk '{if (match($0,"href=\"([0-9]{4}-[0-9][0-9]-[0-9][0-9])\"",a)) print a[1]}'
0188login:Penguin
2011/11/29(火) 16:01:19.31ID:vLvhB/JGうーん、あまりわかりやすい方法ではないですね。
メンテナンスしにくいコードになってしまうので、perlが使えるよう上司に交渉したほうがよさそうです。
回答いただいた方、ありがとうございました。
0189login:Penguin
2011/11/29(火) 16:28:12.31ID:MmS6Zrem0190login:Penguin
2011/11/29(火) 17:00:24.97ID:vLvhB/JG186は、単にgawk独自の拡張機能を知ってないとわかりにくいというだけであり、
マッチした結果を明示的に変数に代入するのはいいことだと思います。
なお個人的には
match(string, rexp, matched)
はmatchedがいわゆるout変数になるため分かりにくいです。
matched = match(string, rexp)
のほうがよかったです。
0191login:Penguin
2011/11/29(火) 17:27:04.96ID:8ESv/UnH何言っているのかちょっと分からん。言語仕様上awkは配列を返せないだろ
0192login:Penguin
2011/11/30(水) 00:16:56.92ID:CRejWMLUgawk/mawk/true awk相互で運用する必要ってよくあるものなの?
またはbusyboxのawkで使いたいとか?
0193login:Penguin
2011/11/30(水) 02:39:57.37ID:TGbwU425よくあるかは知らないけど、少なくとも手元の環境には3種類のawkがあって、gawkの拡張が使えない
mawkはnextfileにも対応してないし、awkは実装の差がかなり大きいと思うよ
0194login:Penguin
2011/12/01(木) 00:38:55.88ID:cIbdY7f8perlというロジックが分かりにくい。
0195login:Penguin
2011/12/03(土) 01:06:16.24ID:0aRpOAWF(ああ(いい((うう)(ええ))))
この行の「ああ」「いい」「うう」「ええ」を変数に入れたい時、
何か定番な書き方はありますか?
0196login:Penguin
2011/12/03(土) 01:56:31.82ID:ivCb+cNz括弧を区切りにして分けたいだけならFS="[()]+"で
配列に入れたいならsplitでどう?
0197login:Penguin
2011/12/03(土) 01:59:50.51ID:ivCb+cNzgawkに詳しい別の誰かに期待してくれ。拡張正規表現でも無理じゃなかったか
■ このスレッドは過去ログ倉庫に格納されています