awk ファンクラブ
1 :login:Penguin :2008/07/07(月) 20:45:18 ID:wYmB5VwU.net おーくについて語りましょう
226 :login:Penguin :2018/01/15(月) 20:15:48.31 ID:eZF7GqQ1.net 空の配列はどう作るの。 bashの declare -a var 相当。
227 :login:Penguin :2018/05/22(火) 08:18:57.94 ID:Czl6p0FW.net 僕の知り合いの知り合いができた副業情報ドットコム 関心がある人だけ見てください。 グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 V09DR
228 :login:Penguin :2018/08/06(月) 01:01:52.57 ID:lYVh6drB.net Linux Beep Musicに感動したのでnokia2beeps.tclを移植してみた https://pastebin.com/hLJnpPNv nokia2beeps.awkとか保存し下記のページのコードを鳴らすやつ http://nokia.nigelcoldwell.co.uk/tunes.html あと日本語の着メロも対応してる(コメント参照)
229 :login:Penguin :2018/12/26(水) 23:28:57.46 ID:41RDdYnE.net awk だけど実行ファイルのフォーマットは ELF …いや、なんでもないです。
230 :login:Penguin :2019/02/17(日) 10:18:47.85 ID:tq2CmSlw.net 初心者ですが正規表現で半角をすべてというのはどうやるんでしたっけ どっかで見たような気がするんですが
231 :login:Penguin :2019/02/17(日) 14:29:57.54 ID:kuwCjzfH.net 「半角」ってどう定義するのか難しいな この辺読んでがんばれ https://www.gnu.org/software/gawk/manual/gawk.html#Bracket-Expressions
232 :login:Penguin :2019/02/18(月) 16:59:38.97 ID:bs/RCYIZ.net >>226 Awk の識別しは、最初っから空の配列だよ いきなり使えば良い
233 :login:Penguin :2019/02/18(月) 17:04:21.28 ID:bs/RCYIZ.net みなさんはgawk以外の処理系に移植できるか とか、多少でも考えますか?私は気にしなくなりました。 他にも幾つか実装があるにはあるんですが、あんまり 活発じゃないし、言及もされないし、こだわりすぎると 不便でしょうがないから、気にしなくなりました。 けしからんでしょうか?
234 :login:Penguin :2019/02/18(月) 20:36:34.78 ID:uVw99/R9.net GNU awkが事実上標準だからPOSIX準拠は気にしないな
235 :login:Penguin :2019/02/22(金) 21:05:04.57 ID:HUsgEyAs.net AWK48!!
236 :login:Penguin :2019/04/17(水) 15:19:28.33 ID:j5OQY4r8.net GNU AWK 5.0がリリース。8年ぶりのメジャーバージョンアップ。正規表現ライブラリが GLIBCからGNULIBへ移行、名前空間が実装 2019年4月17日 https://www.publickey1.jp/blog/19/gnu_awk_508glibcgnulib.html 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 :2019/04/17(水) 17:39:45.30 ID:oKn1+k+8.net 名前空間って、これまでのスクリプトが動かなくなるんだべか。
238 :238 :2019/04/17(水) 22:27:02.77 ID: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 :2019/12/04(水) 08:39:54 ID:EOFhhwOn.net ageで行こう
240 :login:Penguin :2019/12/04(水) 18:18:20.57 ID:8Zd1xJ0mr >>226 BEGIN { for (i in a); #空配列作成 if (isarray(a)) print "aは配列である"; else print "aは配列でない"; }
241 :login:Penguin :2019/12/10(火) 14:57:28.86 ID: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 :2019/12/10(火) 15:04:17.01 ID:RI3PNloA.net 追記 gawkを動かす環境はubuntu19.04で、主にWindowsからteratermでsshログインしての使用を考えています。
243 :login:Penguin :2019/12/10(火) 19:53:29.48 ID:/8T+qheh.net >>241 awkじゃなきゃあかんの? cursesでやればいいと思うけど
244 :login:Penguin :2019/12/11(水) 00:25:34.40 ID:ysC5v/gW.net >>243 awkでやりたいんですよ。 cursesってawk用ライブラリありましたっけ? 自分アホなりに色々調べて、"read -n 1" をうまく使えば文字コード取れそうという所までは気がついたんですが、 これをawkスクリプト中で実行させて戻り値をawk変数に取り込む方法がわかりません。 どうすれば文字コードが取れるんでしょう?
245 :login:Penguin :2019/12/11(水) 03:25:34.73 ID:YST7j856.net 試さないで適当に書いてみるけど 一文字読みとる command 用意して command | getline var もしくは入力された文字を終了ステータスとして返す command で var = system(command)
246 :login:Penguin :2019/12/11(水) 09:57:26 ID:JotyB0zR.net 試してから書きゃいいのに。
247 :login:Penguin :2019/12/11(水) 17:11:40 ID:w4fDC3xv.net >>244 確かにそれはちゃんと機能する。しかし、矢印キーとなると話は別だ。 矢印キーは 3 バイトだから。 1 バイト読んで ESC だったらもっと読むということになる。 もちろん ESC じゃなかった場合のことも考える。 想定した処理が全部終わった後で、印字可能文字で 1 行で出力する …というプログラムを C で書くということになるかなあ。 ところでエコーバックはどうする? 多分、こんなこともしたくなるんじゃないか。 https://qiita.com/Ki4mTaria/items/36feda5f6aa54643775a dialog とか使った方がいいんじゃないかな。
248 :login:Penguin :2019/12/12(木) 01:58:28.69 ID:+gdBEfoc.net なんかすみません。 dialog & shell & awkでできるのはわかってるんですが、なんか負けたような気がしてw なんとかshellのコマンドか標準で入っている外部コマンド & awkでできないもんかと思ったんです。 Linux ←→ Windowsのポータビリティを考えた場合、やはり1文字入力してそれを返すだけの小さなプログラムをCで作ってawkでそれを呼んで戻り値を得るのが一番手っ取り早いのかな、と思いつつあるところです。 でも、もう少し最初の路線で調べてみます。徒労に終わりそうな気はしますが。
249 :247 :2019/12/12(木) 16:49:42.78 ID: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 :2019/12/12(木) 17:04:12.98 ID:Ks56aDFp.net そもそも「リターンキーで決定」とかなら食べ残しの心配は無いかな?
251 :login:Penguin :2019/12/13(金) 04:10:04.34 ID: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 :2019/12/13(金) 09:49:46.45 ID:WFJlAa92.net perlとかでやれよ。 awkで簡単に出来ることをsed+grepで頑張る人達がクダスレ辺りに沢山いるが、それと同等だろう。 知恵の輪としては面白いけれど、成果には乏しいのでないか。
253 :login:Penguin :2019/12/13(金) 13:58:14.66 ID:+ky049vi.net それを言っちゃあおしまいよ
254 :login:Penguin :2019/12/13(金) 20:04:51.41 ID:For+FbwN.net なんか、返事するのがアホくさくなってきました。 さようなら。
255 :login:Penguin :2019/12/13(金) 22:45:11.81 ID:db+XusY3P 頭使って面白いなら、贅沢に時間使ってAWKでできること 何でもやるべき 時間がなきゃ252みたいになる 成果?笑わせる
256 :login:Penguin :2019/12/13(金) 23:44:48.59 ID:gNHNDwLS.net awkはまずデータファイルありきで便利なものだしねえ。 趣味でどういう使い方しても勝手だけど。
257 :login:Penguin :2019/12/14(土) 09:10:47.22 ID:b3dqliHo.net >>254 Perl を知っていながら awk でやろうってんだから、この程度のことは予想できたでしょう。 無視してりゃいいんだよ。 もっとも、真剣に取り組んでいるなら他の場所を探してもいいかもしれない。 でもここにも君を助けようとした者がいたことは覚えておいてほしい。
258 :login:Penguin :2019/12/14(土) 09:34:23.87 ID:b3dqliHo.net あっ、某知恵袋はやめときなさい。あそこは知ったかぶりが多いから。 知らないなら回答しなきゃいいのにね。
259 :login:Penguin :2019/12/14(土) 10:22:52.96 ID:pIVSIbEK.net >>258 Linuxオタが集う外国の掲示板当たりの良いのかもな 普通のLinuxユーザーなら、awkにこだわりすぎの変な奴だになって 相手にしてはいけない・からかってやれだろうからな。
260 :login:Penguin :2020/01/01(水) 02:33:22.62 ID:TglKmVwfj >>259 海外の方が盛でしょうしね
261 :login:Penguin :2020/01/23(木) 22:20:41.03 ID:uGOVD2VtY teratailというところでawkの質問・回答見てきたけど あんまりおもしろくなかった 純粋にawkの質問というのが少ない この板は貴重、保護するに値する やる気をスポイルするの今度から禁止な
262 :login:Penguin :2020/02/04(火) 15:23:00.78 ID:n/qS2PYXS 英語は苦手ですが海外の掲示板に以下の質問を投稿しました 題:文字列から1文字ずつ抽出 AWK:文字列の先頭から末尾まで1文字ずつ取り出す場合 こんな風に記述されたものをよく見かけます 例: function rev1(str, i, ret) { for (i = 1; i <= length(str); i++) ret = substr(str, i, 1) ret; return ret; } 私は、length()を使う必要はないと思っています function rev2(str, ch, i, ret) { while (ch = substr(str, ++i, 1)) ret = ch ret; return ret; } これは動作しますが、間違っていませんか? と書きました rev1():定番パターンですが、このケースでfor+length()は、 文字列を先頭から末尾まで全部読むにも拘わらず、 文字列全体の長さをあらかじめ調べるという 「頭の悪いアルゴリズム」で成り立っています もう少しスマートな方法があるかもしれないと考えたものがrev2()です 回答いただいた外国の方との根源的な部分の共感はやはり難しいです 英語勉強しないと
263 :login:Penguin :2020/02/07(金) 12:59:08.35 ID:qmwRbkdNN 【日本】 コカコーラ、ラーコカコ 【イスラエル】http://lavender.5ch.net/test/read.cgi/min/1575174748/l50
264 :login:Penguin :2021/02/19(金) 05:12:44.08 ID:m+sRJxZf.net >>249 bashはreadline組み込まれてるので使って良いんじゃないかな? あとライン毎にバッファしてるのが問題な気がするから、stdbuf cmdでcmdの参照してるstdlibをすり替えられて、一文字毎にflushする用に出来たりするがどうだろう
265 :login:Penguin :2021/12/29(水) 17:13:13.59 ID:2+qwQ610.net busyboxのお陰でやっとwindowsでawkを使う気になれた やっぱり良いツールだな
266 :login:Penguin :2022/01/10(月) 19:56:17.76 ID:CxUz26hu.net winget install awkで入る(g)awkじゃいかんの? 今のところ困った事はない
267 :login:Penguin :2022/01/19(水) 11:13:08.41 ID:LY9w68e5.net 他のunixコマンドと連携して使いたかった そこでいつもやる気なくしてた
268 :login:Penguin :2022/01/19(水) 15:45:06.70 ID:UQUeA/41.net chocoやら乱立してたパッケマネがやっとMS公認の下で統合されたことだし、整合性も良くなってくんじゃないの 楽観的予測
269 :login:Penguin :2022/02/21(月) 11:06:13.16 ID:zLs4IRDg.net awkwardな所にキュンとする
270 :login:Penguin :2022/05/27(金) 17:18:00.89 ID:zmLBeAi1.net こんにちはPOSIX原理主義者です。何か質問ある?
271 :login:Penguin :2022/05/27(金) 17:29:05.92 ID:S4nvBfyf.net 今のところ使用上困ってることは無いんだけどせっかくなのでひとつ質問を nawk, mawk, gawk どれが最もPOSIX準拠? 出来れば標準的なやつで修行しておきたいので
272 :login:Penguin :2022/05/28(土) 01:45:13.16 ID:6jvPj11k.net >>271 全部POSIX準拠。ただし全部POSIXに準拠してないところがある。
273 :login:Penguin :2022/05/28(土) 08:00:52.09 ID:SKCSltUT.net 本来の文字列整形だけなら3つともあまり変わらん気がするけど 出過ぎた事を言わない方がいいんだろうな
274 :login:Penguin :2022/05/28(土) 09:25:14.43 ID:ystZjCC8.net 全部POSIX準拠だけど、Unicodeに対応してるのはgawkだけで lengthの長さが違うとかいう違いがある。 そもそもPOSIXはCロケールしか考慮されてないので Unicode非対応でもPOSIX準拠。
275 :76 :2024/04/09(火) 09:52:04.48 ID:ixlG1zDd.net https://twitter.com/oreilly_japan/status/1771033397969953039 (deleted an unsolicited ad)
73 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者