X



トップページLinux
270コメント86KB
awk ファンクラブ
0001login:Penguin垢版2008/07/07(月) 20:45:18ID:wYmB5VwU
おーくについて語りましょう
0220218垢版2017/07/11(火) 08:56:48.21ID:WwRbMPQQ
HP製作者です。当方の環境はWindowsです。
Linux環境下で同じ実行結果を得ることができるのか、
知りたいのです。
よろしくお願いします。
0221login:Penguin垢版2017/07/11(火) 11:06:05.29ID:DDC9W9sY
いい機会だからLinux入れちゃえば
0222218垢版2017/07/11(火) 11:10:26.52ID:WwRbMPQQ
それもそうですね。
昔々REDHATだったか入れていました。
現在のおすすめのディストリビューションは何でしょうか?
0223login:Penguin垢版2017/07/11(火) 12:32:44.18ID:tm800Hl5
今はMS製のcygwinみたいのがあるのでは。Windows 10 Bashナントカ
0224218垢版2017/07/11(火) 12:42:28.77ID:b8V9VslP
Windows 10 Creators UpdateでUbuntu 16.04.1 これかな。
やってみます。ありがとうございました。
0225login:Penguin垢版2017/11/21(火) 02:37:01.57ID:PQah4bj0
jgawkをガウォークって読んでたマクロスヲタいない
0226login:Penguin垢版2017/12/29(金) 14:37:58.78ID:S/CsVkMC
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

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

DCQTVO9E2N
0227login:Penguin垢版2018/01/15(月) 20:15:48.31ID:eZF7GqQ1
空の配列はどう作るの。
bashの declare -a var 相当。
0228login:Penguin垢版2018/05/22(火) 08:18:57.94ID:Czl6p0FW
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

V09DR
0230login:Penguin垢版2018/12/26(水) 23:28:57.46ID:41RDdYnE
awk だけど実行ファイルのフォーマットは ELF …いや、なんでもないです。
0231login:Penguin垢版2019/02/17(日) 10:18:47.85ID:tq2CmSlw
初心者ですが正規表現で半角をすべてというのはどうやるんでしたっけ
どっかで見たような気がするんですが
0233login:Penguin垢版2019/02/18(月) 16:59:38.97ID:bs/RCYIZ
>>227
Awk の識別しは、最初っから空の配列だよ
いきなり使えば良い
0234login:Penguin垢版2019/02/18(月) 17:04:21.28ID:bs/RCYIZ
みなさんはgawk以外の処理系に移植できるか
とか、多少でも考えますか?私は気にしなくなりました。
他にも幾つか実装があるにはあるんですが、あんまり
活発じゃないし、言及もされないし、こだわりすぎると
不便でしょうがないから、気にしなくなりました。
けしからんでしょうか?
0235login:Penguin垢版2019/02/18(月) 20:36:34.78ID:uVw99/R9
GNU awkが事実上標準だからPOSIX準拠は気にしないな
0236login:Penguin垢版2019/02/22(金) 21:05:04.57ID:HUsgEyAs
AWK48!!
0237login:Penguin垢版2019/04/17(水) 15:19:28.33ID:j5OQY4r8
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環境が想定されるようになっています。

そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
0238login:Penguin垢版2019/04/17(水) 17:39:45.30ID:oKn1+k+8
名前空間って、これまでのスクリプトが動かなくなるんだべか。
0239238垢版2019/04/17(水) 22:27:02.77ID:oKn1+k+8
さすがにそれは無かった。
$ 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
$
0241login:Penguin垢版2019/12/10(火) 14:57:28.86ID:RI3PNloA
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)
0242login:Penguin垢版2019/12/10(火) 15:04:17.01ID:RI3PNloA
追記
gawkを動かす環境はubuntu19.04で、主にWindowsからteratermでsshログインしての使用を考えています。
0243login:Penguin垢版2019/12/10(火) 19:53:29.48ID:/8T+qheh
>>241
awkじゃなきゃあかんの?
cursesでやればいいと思うけど
0244login:Penguin垢版2019/12/11(水) 00:25:34.40ID:ysC5v/gW
>>243
awkでやりたいんですよ。
cursesってawk用ライブラリありましたっけ?

自分アホなりに色々調べて、"read -n 1" をうまく使えば文字コード取れそうという所までは気がついたんですが、
これをawkスクリプト中で実行させて戻り値をawk変数に取り込む方法がわかりません。
どうすれば文字コードが取れるんでしょう?
0245login:Penguin垢版2019/12/11(水) 03:25:34.73ID:YST7j856
試さないで適当に書いてみるけど
一文字読みとる command 用意して
command | getline var
もしくは入力された文字を終了ステータスとして返す command で
var = system(command)
0246login:Penguin垢版2019/12/11(水) 09:57:26.52ID:JotyB0zR
試してから書きゃいいのに。
0247login:Penguin垢版2019/12/11(水) 17:11:40.69ID:w4fDC3xv
>>244
確かにそれはちゃんと機能する。しかし、矢印キーとなると話は別だ。
矢印キーは 3 バイトだから。
1 バイト読んで ESC だったらもっと読むということになる。
もちろん ESC じゃなかった場合のことも考える。
想定した処理が全部終わった後で、印字可能文字で 1 行で出力する
…というプログラムを C で書くということになるかなあ。
ところでエコーバックはどうする? 多分、こんなこともしたくなるんじゃないか。
https://qiita.com/Ki4mTaria/items/36feda5f6aa54643775a

dialog とか使った方がいいんじゃないかな。
0248login:Penguin垢版2019/12/12(木) 01:58:28.69ID:+gdBEfoc
なんかすみません。
dialog & shell & awkでできるのはわかってるんですが、なんか負けたような気がしてw
なんとかshellのコマンドか標準で入っている外部コマンド & awkでできないもんかと思ったんです。
Linux ←→ Windowsのポータビリティを考えた場合、やはり1文字入力してそれを返すだけの小さなプログラムをCで作ってawkでそれを呼んで戻り値を得るのが一番手っ取り早いのかな、と思いつつあるところです。
でも、もう少し最初の路線で調べてみます。徒労に終わりそうな気はしますが。
0249247垢版2019/12/12(木) 16:49:42.78ID:Ks56aDFp
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 行で受け取るほうがいいかもしれない。
もっとも、入力元を共有しているから食べ残しが問題になるのであって
新たに端末エミュレータを起動してその上で実行するのなら問題にならない。
パイプが繋がらないから別の方法で結果を返す必要はあるが、メニューを出して
ユーザに選択させるという用途なら悪くない方法かもしれない。
0250login:Penguin垢版2019/12/12(木) 17:04:12.98ID:Ks56aDFp
そもそも「リターンキーで決定」とかなら食べ残しの心配は無いかな?
0251login:Penguin垢版2019/12/13(金) 04:10:04.34ID:For+FbwN
ありがとうございます。
-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");
}

今日はもう寝ます
0252login:Penguin垢版2019/12/13(金) 09:49:46.45ID:WFJlAa92
perlとかでやれよ。
awkで簡単に出来ることをsed+grepで頑張る人達がクダスレ辺りに沢山いるが、それと同等だろう。
知恵の輪としては面白いけれど、成果には乏しいのでないか。
0253login:Penguin垢版2019/12/13(金) 13:58:14.66ID:+ky049vi
それを言っちゃあおしまいよ
0254login:Penguin垢版2019/12/13(金) 20:04:51.41ID:For+FbwN
なんか、返事するのがアホくさくなってきました。
さようなら。
0255login:Penguin垢版2019/12/13(金) 23:44:48.59ID:gNHNDwLS
awkはまずデータファイルありきで便利なものだしねえ。
趣味でどういう使い方しても勝手だけど。
0256login:Penguin垢版2019/12/14(土) 09:10:47.22ID:b3dqliHo
>>254
Perl を知っていながら awk でやろうってんだから、この程度のことは予想できたでしょう。
無視してりゃいいんだよ。
もっとも、真剣に取り組んでいるなら他の場所を探してもいいかもしれない。
でもここにも君を助けようとした者がいたことは覚えておいてほしい。
0257login:Penguin垢版2019/12/14(土) 09:34:23.87ID:b3dqliHo
あっ、某知恵袋はやめときなさい。あそこは知ったかぶりが多いから。
知らないなら回答しなきゃいいのにね。
0258login:Penguin垢版2019/12/14(土) 10:22:52.96ID:pIVSIbEK
>>257
Linuxオタが集う外国の掲示板当たりの良いのかもな
普通のLinuxユーザーなら、awkにこだわりすぎの変な奴だになって
相手にしてはいけない・からかってやれだろうからな。
0259login:Penguin垢版2021/02/19(金) 05:12:44.08ID:m+sRJxZf
>>249
bashはreadline組み込まれてるので使って良いんじゃないかな?
あとライン毎にバッファしてるのが問題な気がするから、stdbuf cmdでcmdの参照してるstdlibをすり替えられて、一文字毎にflushする用に出来たりするがどうだろう
0260login:Penguin垢版2021/12/29(水) 17:13:13.59ID:2+qwQ610
busyboxのお陰でやっとwindowsでawkを使う気になれた
やっぱり良いツールだな
0261login:Penguin垢版2022/01/10(月) 19:56:17.76ID:CxUz26hu
winget install awkで入る(g)awkじゃいかんの?
今のところ困った事はない
0262login:Penguin垢版2022/01/19(水) 11:13:08.41ID:LY9w68e5
他のunixコマンドと連携して使いたかった
そこでいつもやる気なくしてた
0263login:Penguin垢版2022/01/19(水) 15:45:06.70ID:UQUeA/41
chocoやら乱立してたパッケマネがやっとMS公認の下で統合されたことだし、整合性も良くなってくんじゃないの
楽観的予測
0264login:Penguin垢版2022/02/21(月) 11:06:13.16ID:zLs4IRDg
awkwardな所にキュンとする
0265login:Penguin垢版2022/05/27(金) 17:18:00.89ID:zmLBeAi1
こんにちはPOSIX原理主義者です。何か質問ある?
0266login:Penguin垢版2022/05/27(金) 17:29:05.92ID:S4nvBfyf
今のところ使用上困ってることは無いんだけどせっかくなのでひとつ質問を
nawk, mawk, gawk どれが最もPOSIX準拠?
出来れば標準的なやつで修行しておきたいので
0267login:Penguin垢版2022/05/28(土) 01:45:13.16ID:6jvPj11k
>>266
全部POSIX準拠。ただし全部POSIXに準拠してないところがある。
0268login:Penguin垢版2022/05/28(土) 08:00:52.09ID:SKCSltUT
本来の文字列整形だけなら3つともあまり変わらん気がするけど
出過ぎた事を言わない方がいいんだろうな
0269login:Penguin垢版2022/05/28(土) 09:25:14.43ID:ystZjCC8
全部POSIX準拠だけど、Unicodeに対応してるのはgawkだけで
lengthの長さが違うとかいう違いがある。

そもそもPOSIXはCロケールしか考慮されてないので
Unicode非対応でもPOSIX準拠。
レスを投稿する


ニューススポーツなんでも実況