awk ファンクラブ

1login:Penguin2008/07/07(月) 20:45:18ID:wYmB5VwU
おーくについて語りましょう

179login:Penguin2011/08/22(月) 10:27:15.81ID:bf5ta6rs
awk にわけわかんな機能を増やすよりも、
RFC4180 互換なフィールド分割オプションを実装すればいいのにといつも思う。

180login:Penguin2011/08/22(月) 10:33:38.59ID:uwcmdhh8
馬鹿の巣窟にわざわざ書き込むな馬鹿

181login:Penguin2011/08/22(月) 11:11:08.80ID:4smqF+KA
見事に馬鹿の巣窟と化したねえ

182login:Penguin2011/11/28(月) 19:46:48.89ID:NIKBR+N1
perl -e 'print $1 if /href="(¥d¥d¥d¥d-¥d¥d¥-¥d¥d)"/'
と同じことをawkでやろうとしているのですがわかりません。
awk -e '/href="(¥d¥d¥d¥d-¥d¥d¥-¥d¥d)"/ { print ??? }'
グルーピングしたあとにそれを取り出す方法を探したのですが、わかりませんでした。
awkまたはsedでのやり方を教えて下さい。


183login:Penguin2011/11/28(月) 20:46:46.52ID:skmC2JM9
>>181
馬鹿じゃないあなたに是非>>182の回答をしてもらおうか。

184login:Penguin2011/11/28(月) 21:15:52.48ID:Oo5SGhpX
>>182
perl がわからないから求めるものがよくわからないけれど、こんな感じ?

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

185login:Penguin2011/11/28(月) 23:48:15.14ID:mynsjW2o
>>182
どの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でも正規表現パターンのグループを保存している組み込み変数はなかった気がする

186login:Penguin2011/11/29(火) 00:49:47.68ID:6tCpTQmb
gawk4.0なら
awk '{if (match($0,"href=([0-9]{4}-[0-9][0-9]-[0-9][0-9])",a)) print a[1]}'
じゃ駄目?

187login:Penguin2011/11/29(火) 01:04:03.02ID:6tCpTQmb
ごめん、
awk '{if (match($0,"href=\"([0-9]{4}-[0-9][0-9]-[0-9][0-9])\"",a)) print a[1]}'

188login:Penguin2011/11/29(火) 16:01:19.31ID:vLvhB/JG
>>184-186
うーん、あまりわかりやすい方法ではないですね。
メンテナンスしにくいコードになってしまうので、perlが使えるよう上司に交渉したほうがよさそうです。
回答いただいた方、ありがとうございました。

189login:Penguin2011/11/29(火) 16:28:12.31ID:MmS6Zrem
>>185はともかく>>186-187の方がPerlみたいにグローバル変数にマッチ結果を入れるより分かりやすいと思うのって俺だけ?

190login:Penguin2011/11/29(火) 17:00:24.97ID:vLvhB/JG
>>189
186は、単にgawk独自の拡張機能を知ってないとわかりにくいというだけであり、
マッチした結果を明示的に変数に代入するのはいいことだと思います。
なお個人的には
match(string, rexp, matched)
はmatchedがいわゆるout変数になるため分かりにくいです。
matched = match(string, rexp)
のほうがよかったです。

191login:Penguin2011/11/29(火) 17:27:04.96ID:8ESv/UnH
>>190
何言っているのかちょっと分からん。言語仕様上awkは配列を返せないだろ

192login:Penguin2011/11/30(水) 00:16:56.92ID:CRejWMLU
gawk独自の実装はどうも…という話がよく出てくるけど、
gawk/mawk/true awk相互で運用する必要ってよくあるものなの?
またはbusyboxのawkで使いたいとか?

193login:Penguin2011/11/30(水) 02:39:57.37ID:TGbwU425
gawkは最早awkと呼ぶには拡張され過ぎている感じがある
よくあるかは知らないけど、少なくとも手元の環境には3種類のawkがあって、gawkの拡張が使えない
mawkはnextfileにも対応してないし、awkは実装の差がかなり大きいと思うよ

194login:Penguin2011/12/01(木) 00:38:55.88ID:cIbdY7f8
gawkが拡張されてるのは承知だが、gawk依存だとメンテが大変だから
perlというロジックが分かりにくい。


195login:Penguin2011/12/03(土) 01:06:16.24ID:0aRpOAWF
gawkで

(ああ(いい((うう)(ええ))))

この行の「ああ」「いい」「うう」「ええ」を変数に入れたい時、
何か定番な書き方はありますか?

196login:Penguin2011/12/03(土) 01:56:31.82ID:ivCb+cNz
何を期待しているのか分からん
括弧を区切りにして分けたいだけならFS="[()]+"で
配列に入れたいならsplitでどう?

197login:Penguin2011/12/03(土) 01:59:50.51ID:ivCb+cNz
もしかして括弧の対応をとりながら分けたいってことなら
gawkに詳しい別の誰かに期待してくれ。拡張正規表現でも無理じゃなかったか

198login:Penguin2013/03/07(木) 06:45:54.68ID:4D+kiInZ
str = "(ああ(いい((うう)(ええ))))"
while (match(str,/([^()]*)/)) {
v = substr(str,RSTART+1,RLENGTH-2)
str = substr(str,1,RSTART-1) substr(str,RSTART+RLENGTH)
if (v != "") {
# 取り出した v をなんかする
}
}
とかじゃ駄目なの?
ちゃんと構文解析するなら yacc (bison) を使わないと駄目だよ

199login:Penguin2013/03/12(火) 12:42:06.70ID:qyuXfAO9
      _
      |O\
      |   \ キリキリ
    ∧|∧   \ キリキリ
ググゥ>(;⌒ヽ    \
    ∪  |     (~)
     ∪∪   γ´⌒`ヽ
     ) )    {i:i:i:i:i:i:i:i:}
     ( (    ( ´・ω・)、
           (O ⌒ )O
            ⊂_)∪

200login:Penguin2013/03/20(水) 12:52:31.89ID:YjhinaPB
しつもん
http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_050 のスクリプトの35行目

for (++day;;) {

の意味と動作がよくわからんです
which で等価なループを書くとどんな感じになるの? カコイイ先輩おしえてplz

201login:Penguin2013/03/20(水) 20:01:52.34ID:BDkPT9MX
>>200
++day; while (1) {

202login:Penguin2013/03/20(水) 22:53:22.42ID:YjhinaPB
>>201
先輩ありがとう
++day を最初に持ってくるのはオイラも考えたんですが、break の条件式も反転して持ってくればおkかなと思って

$ diff time.awk time2.awk
34,35c34,35
<
< for (++day;;) {
---
> ++day;
> while (day >= year_days) {
49,52d48
< }
<
< if (day < year_days) {
< break;

てやったら1日ズレちゃったんだけどこれってどこがマズいんでしょうか (・ω・` )

203login:Penguin2013/03/22(金) 01:16:43.88ID:Jmj0m+XB
>>202
そのbreakの後にも続きの処理があるだろ。年もズレるんじゃない?

2042002013/03/24(日) 14:19:31.22ID:UI34mYpn
>>203
day の値を追っかけてみたら元のfor、変更後のwhileともに同じ値で終了してたので頭抱えてたんですが
もう少し調べてみたら leap の値がズレてました
break の前の処理が1回分少なかったということで、落ち着いて考えれば当たり前の結論でした (;´Д`)

結局この処理の場合は元々のスクリプトや >>201 のように無限ループ使うのが一番シンプルに
書けるんだなーと確認して納得しました。先輩方ありがとう

205login:Penguin2014/03/21(金) 06:08:21.56ID:+P5ZN4Ej
AWKを256倍使うための本が読みたいのですが
どうにかして入手できないでしょうか?

206login:Penguin2014/03/21(金) 07:35:13.02ID:TlIvqwz8

207login:Penguin2014/03/21(金) 13:50:53.67ID:2joEzm1b
たけえわ!
こういう本こそ電子版にしてくれねえかなあ

208login:Penguin2014/03/21(金) 22:38:59.40ID:+P5ZN4Ej
レスありがとうございます
高いけどあるといえばあるんですね
どうしようかな

209762014/03/21(金) 23:39:07.83ID:UPcdeELD
ブックオフで先週見たぞ

210login:Penguin2015/01/24(土) 09:55:38.14ID:gAuUge45
持ってたけどいつの間にか捨てていた

211login:Penguin2015/01/24(土) 12:11:48.77ID:4AXaMrRk
紙質が悪くてボロボロになった

212login:Penguin2015/02/03(火) 13:34:28.90ID:lZQLBw3l
Linuxも電子版出してほしいな(´・ω・`)

213login:Penguin2016/08/29(月) 23:40:58.70ID:W/IDgrhA
Gawk4.1.4出てたのか。

214login:Penguin2016/11/09(水) 18:03:36.84ID:XXe91GfC
なつい

215login:Penguin2017/01/25(水) 11:01:32.67ID:6VFENplc
長年親しんだテキストの遊園地がなくなってて非常に悲しい
どっかにアーカイブないっすか

216login:Penguin2017/03/17(金) 05:15:18.56ID:RjcJSjOQ
>>215
で、それはいつできるんだ?
できたらURL貼るのを忘れんなよ

217login:Penguin2017/03/17(金) 05:22:31.32ID:RjcJSjOQ

2182182017/07/10(月) 19:23:00.44ID:EatnUbnm
おばんです。
Linux環境の方にお願いします。
下記にあるblength()を試してもらえませんか?
http://www1.bbiq.jp/rem_vba/gawk_blength.html
よろしくお願いします。

219デフォルトの名無しさん2017/07/11(火) 08:37:02.92ID:7nEGt2Mb
なぜそれを Linux で? 何を知りたい?

2202182017/07/11(火) 08:56:48.21ID:WwRbMPQQ
HP製作者です。当方の環境はWindowsです。
Linux環境下で同じ実行結果を得ることができるのか、
知りたいのです。
よろしくお願いします。

221login:Penguin2017/07/11(火) 11:06:05.29ID:DDC9W9sY
いい機会だからLinux入れちゃえば

2222182017/07/11(火) 11:10:26.52ID:WwRbMPQQ
それもそうですね。
昔々REDHATだったか入れていました。
現在のおすすめのディストリビューションは何でしょうか?

223login:Penguin2017/07/11(火) 12:32:44.18ID:tm800Hl5
今はMS製のcygwinみたいのがあるのでは。Windows 10 Bashナントカ

2242182017/07/11(火) 12:42:28.77ID:b8V9VslP
Windows 10 Creators UpdateでUbuntu 16.04.1 これかな。
やってみます。ありがとうございました。

225login:Penguin2017/11/21(火) 02:37:01.57ID:PQah4bj0
jgawkをガウォークって読んでたマクロスヲタいない

226login:Penguin2017/12/29(金) 14:37:58.78ID:S/CsVkMC
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

DCQTVO9E2N

227login:Penguin2018/01/15(月) 20:15:48.31ID:eZF7GqQ1
空の配列はどう作るの。
bashの declare -a var 相当。

228login:Penguin2018/05/22(火) 08:18:57.94ID:Czl6p0FW
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

V09DR

229login:Penguin2018/08/06(月) 01:01:52.57ID:lYVh6drB
Linux Beep Musicに感動したのでnokia2beeps.tclを移植してみた
https://pastebin.com/hLJnpPNv
nokia2beeps.awkとか保存し下記のページのコードを鳴らすやつ
http://nokia.nigelcoldwell.co.uk/tunes.html
あと日本語の着メロも対応してる(コメント参照)

新着レスの表示
レスを投稿する