awk ファンクラブat LINUX
awk ファンクラブ - 暇つぶし2ch200:login:Penguin
13/03/20 12:52:31.89 YjhinaPB.net
しつもん
URLリンク(gauc.no-ip.org) のスクリプトの35行目

for (++day;;) {

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

201:login:Penguin
13/03/20 20:01:52.34 BDkPT9MX.net
>>200
++day; while (1) {

202:login:Penguin
13/03/20 22:53:22.42 YjhinaPB.net
>>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日ズレちゃったんだけどこれってどこがマズいんでしょうか (・ω・` )

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

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

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

205:login:Penguin
14/03/21 07:35:13.02 TlIvqwz8.net
>>205
URLリンク(www.amazon.co.jp)

206:login:Penguin
14/03/21 13:50:53.67 2joEzm1b.net
たけえわ!
こういう本こそ電子版にしてくれねえかなあ

207:login:Penguin
14/03/21 22:38:59.40 +P5ZN4Ej.net
レスありがとうございます
高いけどあるといえばあるんですね
どうしようかな

208:76
14/03/21 23:39:07.83 UPcdeELD.net
ブックオフで先週見たぞ

209:login:Penguin
15/01/24 09:55:38.14 gAuUge45.net
持ってたけどいつの間にか捨てていた

210:login:Penguin
15/01/24 12:11:48.77 4AXaMrRk.net
紙質が悪くてボロボロになった

211:login:Penguin
15/02/03 13:34:28.90 lZQLBw3l.net
Linuxも電子版出してほしいな(´・ω・`)

212:login:Penguin
16/08/29 23:40:58.70 W/IDgrhA.net
Gawk4.1.4出てたのか。

213:login:Penguin
16/11/09 18:03:36.84 XXe91GfC.net
なつい

214:login:Penguin
17/01/25 11:01:32.67 6VFENplc.net
長年親しんだテキストの遊園地がなくなってて非常に悲しい
どっかにアーカイブないっすか

215:login:Penguin
17/03/17 05:15:18.56 RjcJSjOQ.net
>>214
で、それはいつできるんだ?
できたらURL貼るのを忘れんなよ

216:login:Penguin
17/03/17 05:22:31.32 RjcJSjOQ.net
URLリンク(archive.org)
The AWK Programming Language

217:218
17/07/10 19:23:00.44 EatnUbnm.net
おばんです。
Linux環境の方にお願いします。
下記にあるblength()を試してもらえませんか?
URLリンク(www1.bbiq.jp)
よろしくお願いします。

218:デフォルトの名無しさん
17/07/11 08:37:02.92 7nEGt2Mb.net
なぜそれを Linux で? 何を知りたい?

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

220:login:Penguin
17/07/11 11:06:05.29 DDC9W9sY.net
いい機会だからLinux入れちゃえば

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

222:login:Penguin
17/07/11 12:32:44.18 tm800Hl5.net
今はMS製のcygwinみたいのがあるのでは。Windows 10 Bashナントカ

223:218
17/07/11 12:42:28.77 b8V9VslP.net
Windows 10 Creators UpdateでUbuntu 16.04.1 これかな。
やってみます。ありがとうございました。

224:login:Penguin
17/11/21 02:37:01.57 PQah4bj0.net
jgawkをガウォークって読んでたマクロスヲタいない

225:login:Penguin
17/12/29 14:37:58.78 S/CsVkMC.net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
DCQTVO9E2N

226:login:Penguin
18/01/15 20:15:48.31 eZF7GqQ1.net
空の配列はどう作るの。
bashの declare -a var 相当。

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

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

229:login:Penguin
18/12/26 23:28:57.46 41RDdYnE.net
awk だけど実行ファイルのフォーマットは ELF …いや、なんでもないです。

230:login:Penguin
19/02/17 10:18:47.85 tq2CmSlw.net
初心者ですが正規表現で半角をすべてというのはどうやるんでしたっけ
どっかで見たような気がするんですが

231:login:Penguin
19/02/17 14:29:57.54 kuwCjzfH.net
「半角」ってどう定義するのか難しいな
この辺読んでがんばれ
URLリンク(www.gnu.org)

232:login:Penguin
19/02/18 16:59:38.97 bs/RCYIZ.net
>>226
Awk の識別しは、最初っから空の配列だよ
いきなり使えば良い

233:login:Penguin
19/02/18 17:04:21.28 bs/RCYIZ.net
みなさんはgawk以外の処理系に移植できるか
とか、多少でも考えますか?私は気にしなくなりました。
他にも幾つか実装があるにはあるんですが、あんまり
活発じゃないし、言及もされないし、こだわりすぎると
不便でしょうがないから、気にしなくなりました。
けしからんでしょうか?

234:login:Penguin
19/02/18 20:36:34.78 uVw99/R9.net
GNU awkが事実上標準だからPOSIX準拠は気にしないな

235:login:Penguin
19/02/22 21:05:04.57 HUsgEyAs.net
AWK48!!

236:login:Penguin
19/04/17 15:19:28.33 j5OQY4r8.net
GNU AWK 5.0がリリース。8年ぶりのメジャーバージョンアップ。正規表現ライブラリが
GLIBCからGNULIBへ移行、名前空間が実装 2019年4月17日
URLリンク(www.publickey1.jp)
UnixやLinuxにおいてsedやgrepなどと並んでよく知られているツールの1つがawk(オーク)
です。このawkのGNUプロジェクトによる実装の最新版「GNU AWK 5.0」(gawk 5.0)の
リリースが発表されました。
2011年にリリースされたGNU AWK 4.0から8年ぶり、直前のバージョンでとして2017年10月に
リリースされた4.2.0からは約1年半ぶりとなります。
AWKはいわゆるスクリプティング言語の一種。変数や関数、制御文など基本的な構文を備え、
テキストファイルを効率的に処理できるのが特徴です。
GNU AWK 5.0の新機能としては、printfの%aおよび%Aの書式がPOSIX標準に準拠したこと、
正規表現のルーチンが、長年にわたってメンテナンスされてきたGLIBCからGNULIBに
置き換わったことなど。
また、識別子に非英語文字を使うためのドキュメント化されていなかったオプションなどは
削除され、ソースコードはC99環境が想定されるようになっています。
そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。

237:login:Penguin
19/04/17 17:39:45.30 oKn1+k+8.net
名前空間って、これまでのスクリプトが動かなくなるんだべか。

238:238
19/04/17 22:27:02.77 oKn1+k+8.net
さすがにそれは無かった。
$ gawk --version
GNU Awk 5.0.0, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)
:
$ gawk 'BEGIN{print awk::ARGC}'
1
$ gawk 'BEGIN{print ARGC}'
1
$

239:login:Penguin
19/12/04 08:39:54 EOFhhwOn.net
ageで行こう

240:login:Penguin
19/12/04 18:18:20.57 8Zd1xJ0mr
>>226
BEGIN {
for (i in a); #空配列作成

if (isarray(a)) print "aは配列である";
else print "aは配列でない";
}

241:login:Penguin
19/12/10 14:57:28.86 RI3PNloA.net
gawkでキーボードから一文字入力をしたいんですが、何かいい方法ないでしょうか?
stdinをgetlineするのではなく、キーを何か一つ押したときにそのコードを即座にgawkで受け取りたいんです。
具体的に何がしたいのかというと、BEGIN内部でスクリプトの動作を設定するパラメタをキーボードで指示したいんですが、
その支持を矢印キーでメニュー選択させたいんです。
ターミナルのエスケープシーケンスはVT100環境を想定しています。
何かヒントでもいいので一文字入力の方法を教えてください〜
gawkはこれ使ってます。
GNU Awk 4.2.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)

242:login:Penguin
19/12/10 15:04:17.01 RI3PNloA.net
追記
gawkを動かす環境はubuntu19.04で、主にWindowsからteratermでsshログインしての使用を考えています。

243:login:Penguin
19/12/10 19:53:29.48 /8T+qheh.net
>>241
awkじゃなきゃあかんの?
cursesでやればいいと思うけど

244:login:Penguin
19/12/11 00:25:34.40 ysC5v/gW.net
>>243
awkでやりたいんですよ。
cursesってawk用ライブラリありましたっけ?
自分アホなりに色々調べて、"read -n 1" をうまく使えば文字コード取れそうという所までは気がついたんですが、
これをawkスクリプト中で実行させて戻り値をawk変数に取り込む方法がわかりません。
どうすれば文字コードが取れるんでしょう?

245:login:Penguin
19/12/11 03:25:34.73 YST7j856.net
試さないで適当に書いてみるけど
一文字読みとる command 用意して
command | getline var
もしくは入力された文字を終了ステータスとして返す command で
var = system(command)

246:login:Penguin
19/12/11 09:57:26 JotyB0zR.net
試してから書きゃいいのに。

247:login:Penguin
19/12/11 17:11:40 w4fDC3xv.net
>>244
確かにそれはちゃんと機能する。しかし、矢印キーとなると話は別だ。
矢印キーは 3 バイトだから。
1 バイト読んで ESC だったらもっと読むということになる。
もちろん ESC じゃなかった場合のことも考える。
想定した処理が全部終わった後で、印字可能文字で 1 行で出力する
…というプログラムを C で書くということになるかなあ。
ところでエコーバックはどうする? 多分、こんなこともしたくなるんじゃないか。
URLリンク(qiita.com)

dialog とか使った方がいいんじゃないかな。

248:login:Penguin
19/12/12 01:58:28.69 +gdBEfoc.net
なんかすみません。
dialog & shell & awkでできるのはわかってるんですが、なんか負けたような気がしてw
なんとかshellのコマンドか標準で入っている外部コマンド & awkでできないもんかと思ったんです。
Linux ←→ Windowsのポータビリティを考えた場合、やはり1文字入力してそれを返すだけの小さなプログラムをCで作ってawkでそれを呼んで戻り値を得るのが一番手っ取り早いのかな、と思いつつあるところです。
でも、もう少し最初の路線で調べてみます。徒労に終わりそうな気はしますが。

249:247
19/12/12 16:49:42.78 Ks56aDFp.net
bash でも出来なくはないと思う。読むだけならいくらでも出来る。
しかし、「残さず食べる」ということを考えると read -n はちょっと…
なぜこれを考える必要があるかというと、食べ残しがあるとたとえばシェルの場合なら
それをコマンドラインだと思って読んでしまっだりする。
read -n は食べ残しが無かったら入力待ちになってしまうので適していないと思う。
他人に使わせるプログラムなら常に意識しておくべきことかもしれない。
そこで、まだ試してないならこんなことを試してみてほしい。
BEGIN {
cmd = "bash -c 'TMOUT=5 ; read -N 8 v ; echo \"$v\" ;'"
for( i = 0; i < 8; i++){
while ( 0 < ( cmd | getline)){
print "i=" i ", 0=[" $0 "]"
}
close( cmd)
}
}
得られたデータの長さが指定した長さに達していないならタイムアウトで終了した。
つまり、食べ残しは無いということになると思う。
ただし、改行の扱いがめんどくさい。
bash は read で読んだ改行をちゃんと送っているのだが getline が削除してしまう。
そして最後の改行は echo が加えたもので、read で読んだのではない。
awk の方で RS の値を変えることでめんどくささが減る可能性はある。
しかしやはり最終結果だけを 1 行で受け取るほうがいいかもしれない。
もっとも、入力元を共有しているから食べ残しが問題になるのであって
新たに端末エミュレータを起動してその上で実行するのなら問題にならない。
パイプが繋がらないから別の方法で結果を返す必要はあるが、メニューを出して
ユーザに選択させるという用途なら悪くない方法かもしれない。

250:login:Penguin
19/12/12 17:04:12.98 Ks56aDFp.net
そもそも「リターンキーで決定」とかなら食べ残しの心配は無いかな?

251:login:Penguin
19/12/13 04:10:04.34 For+FbwN.net
ありがとうございます。
-Nオプションでタイムアウト指定をするというのは目からウロコでした。
秒数を1にして、できるだけレスポンスのいい動きをさせようと思います。
矢印キーは3文字、Fnキーは5文字になるんですね。
そんなことも知りませんでした(汗
今日はawkにはpythonやperlにはあるord関数とchr関数が無いことを知って愕然としてました(笑)
文字を受け取ったはいいものの、文字コードをどうやって調べようかと悩んで行き着いた先のコードです。
笑ってやってください。
function ctblmake(ctbl) {
for (i = 0; i < 255; i++) {
ctbl = ctbl sprintf("%c", i);
}
return ctbl;
}
function ordhex(c) {
return sprintf("%02x", index(ctbl, c)-1);
}
BEGIN {
ctbl = "";
ctbl = ctblmake(ctbl);
print ordhex("?");
print ordhex("c");
print ordhex("b");
}
今日はもう寝ます

252:login:Penguin
19/12/13 09:49:46.45 WFJlAa92.net
perlとかでやれよ。
awkで簡単に出来ることをsed+grepで頑張る人達がクダスレ辺りに沢山いるが、それと同等だろう。
知恵の輪としては面白いけれど、成果には乏しいのでないか。

253:login:Penguin
19/12/13 13:58:14.66 +ky049vi.net
それを言っちゃあおしまいよ

254:login:Penguin
19/12/13 20:04:51.41 For+FbwN.net
なんか、返事するのがアホくさくなってきました。
さようなら。

255:login:Penguin
19/12/13 22:45:11.81 db+XusY3P
頭使って面白いなら、贅沢に時間使ってAWKでできること
何でもやるべき
時間がなきゃ252みたいになる
成果?笑わせる

256:login:Penguin
19/12/13 23:44:48.59 gNHNDwLS.net
awkはまずデータファイルありきで便利なものだしねえ。
趣味でどういう使い方しても勝手だけど。

257:login:Penguin
19/12/14 09:10:47.22 b3dqliHo.net
>>254
Perl を知っていながら awk でやろうってんだから、この程度のことは予想できたでしょう。
無視してりゃいいんだよ。
もっとも、真剣に取り組んでいるなら他の場所を探してもいいかもしれない。
でもここにも君を助けようとした者がいたことは覚えておいてほしい。

258:login:Penguin
19/12/14 09:34:23.87 b3dqliHo.net
あっ、某知恵袋はやめときなさい。あそこは知ったかぶりが多いから。
知らないなら回答しなきゃいいのにね。

259:login:Penguin
19/12/14 10:22:52.96 pIVSIbEK.net
>>258
Linuxオタが集う外国の掲示板当たりの良いのかもな
普通のLinuxユーザーなら、awkにこだわりすぎの変な奴だになって
相手にしてはいけない・からかってやれだろうからな。

260:login:Penguin
20/01/01 02:33:22.62 TglKmVwfj
>>259
海外の方が盛でしょうしね

261:login:Penguin
20/01/23 22:20:41.03 uGOVD2VtY
teratailというところでawkの質問・回答見てきたけど
あんまりおもしろくなかった
純粋にawkの質問というのが少ない
この板は貴重、保護するに値する
やる気をスポイルするの今度から禁止な


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch