awk ファンクラブ (333レス)
上下前次1-新
232: 2019/02/17(日)14:29 ID:kuwCjzfH(1) AAS
「半角」ってどう定義するのか難しいな
この辺読んでがんばれ
外部リンク[html]:www.gnu.org
233: 2019/02/18(月)16:59 ID:bs/RCYIZ(1/2) AAS
>>227
Awk の識別しは、最初っから空の配列だよ
いきなり使えば良い
234: 2019/02/18(月)17:04 ID:bs/RCYIZ(2/2) AAS
みなさんはgawk以外の処理系に移植できるか
とか、多少でも考えますか?私は気にしなくなりました。
他にも幾つか実装があるにはあるんですが、あんまり
活発じゃないし、言及もされないし、こだわりすぎると
不便でしょうがないから、気にしなくなりました。
けしからんでしょうか?
235: 2019/02/18(月)20:36 ID:uVw99/R9(1) AAS
GNU awkが事実上標準だからPOSIX準拠は気にしないな
236: 2019/02/22(金)21:05 ID:HUsgEyAs(1) AAS
AWK48!!
237: 2019/04/17(水)15:19 ID:j5OQY4r8(1) AAS
GNU AWK 5.0がリリース。8年ぶりのメジャーバージョンアップ。正規表現ライブラリが
GLIBCからGNULIBへ移行、名前空間が実装 2019年4月17日
外部リンク[html]: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はいわゆるスクリプティング言語の一種。変数や関数、制御文など基本的な構文を備え、
テキストファイルを効率的に処理できるのが特徴です。
省6
238(1): 2019/04/17(水)17:39 ID:oKn1+k+8(1/2) AAS
名前空間って、これまでのスクリプトが動かなくなるんだべか。
239: 238 2019/04/17(水)22:27 ID:oKn1+k+8(2/2) AAS
さすがにそれは無かった。
$ 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
$
240: [age] 2019/12/04(水)08:39 ID:EOFhhwOn(1) AAS
ageで行こう
241(1): 2019/12/10(火)14:57 ID:RI3PNloA(1/2) AAS
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: 2019/12/10(火)15:04 ID:RI3PNloA(2/2) AAS
追記
gawkを動かす環境はubuntu19.04で、主にWindowsからteratermでsshログインしての使用を考えています。
243(1): 2019/12/10(火)19:53 ID:/8T+qheh(1) AAS
>>241
awkじゃなきゃあかんの?
cursesでやればいいと思うけど
244(1): 2019/12/11(水)00:25 ID:ysC5v/gW(1) AAS
>>243
awkでやりたいんですよ。
cursesってawk用ライブラリありましたっけ?
自分アホなりに色々調べて、"read -n 1" をうまく使えば文字コード取れそうという所までは気がついたんですが、
これをawkスクリプト中で実行させて戻り値をawk変数に取り込む方法がわかりません。
どうすれば文字コードが取れるんでしょう?
245: 2019/12/11(水)03:25 ID:YST7j856(1) AAS
試さないで適当に書いてみるけど
一文字読みとる command 用意して
command | getline var
もしくは入力された文字を終了ステータスとして返す command で
var = system(command)
246: 2019/12/11(水)09:57 ID:JotyB0zR(1) AAS
試してから書きゃいいのに。
247(1): 2019/12/11(水)17:11 ID:w4fDC3xv(1) AAS
>>244
確かにそれはちゃんと機能する。しかし、矢印キーとなると話は別だ。
矢印キーは 3 バイトだから。
1 バイト読んで ESC だったらもっと読むということになる。
もちろん ESC じゃなかった場合のことも考える。
想定した処理が全部終わった後で、印字可能文字で 1 行で出力する
…というプログラムを C で書くということになるかなあ。
ところでエコーバックはどうする? 多分、こんなこともしたくなるんじゃないか。
外部リンク:qiita.com
dialog とか使った方がいいんじゃないかな。
248: 2019/12/12(木)01:58 ID:+gdBEfoc(1) AAS
なんかすみません。
dialog & shell & awkでできるのはわかってるんですが、なんか負けたような気がしてw
なんとかshellのコマンドか標準で入っている外部コマンド & awkでできないもんかと思ったんです。
Linux ←→ Windowsのポータビリティを考えた場合、やはり1文字入力してそれを返すだけの小さなプログラムをCで作ってawkでそれを呼んで戻り値を得るのが一番手っ取り早いのかな、と思いつつあるところです。
でも、もう少し最初の路線で調べてみます。徒労に終わりそうな気はしますが。
249(1): 247 2019/12/12(木)16:49 ID:Ks56aDFp(1/2) AAS
bash でも出来なくはないと思う。読むだけならいくらでも出来る。
しかし、「残さず食べる」ということを考えると read -n はちょっと…
なぜこれを考える必要があるかというと、食べ残しがあるとたとえばシェルの場合なら
それをコマンドラインだと思って読んでしまっだりする。
read -n は食べ残しが無かったら入力待ちになってしまうので適していないと思う。
他人に使わせるプログラムなら常に意識しておくべきことかもしれない。
そこで、まだ試してないならこんなことを試してみてほしい。
BEGIN {
cmd = "bash -c 'TMOUT=5 ; read -N 8 v ; echo \"$v\" ;'"
for( i = 0; i < 8; i++){
省17
250: 2019/12/12(木)17:04 ID:Ks56aDFp(2/2) AAS
そもそも「リターンキーで決定」とかなら食べ残しの心配は無いかな?
251: 2019/12/13(金)04:10 ID:For+FbwN(1/2) AAS
ありがとうございます。
-Nオプションでタイムアウト指定をするというのは目からウロコでした。
秒数を1にして、できるだけレスポンスのいい動きをさせようと思います。
矢印キーは3文字、Fnキーは5文字になるんですね。
そんなことも知りませんでした(汗
今日はawkにはpythonやperlにはあるord関数とchr関数が無いことを知って愕然としてました(笑)
文字を受け取ったはいいものの、文字コードをどうやって調べようかと悩んで行き着いた先のコードです。
笑ってやってください。
function ctblmake(ctbl) {
for (i = 0; i < 255; i++) {
省15
252: 2019/12/13(金)09:49 ID:WFJlAa92(1) AAS
perlとかでやれよ。
awkで簡単に出来ることをsed+grepで頑張る人達がクダスレ辺りに沢山いるが、それと同等だろう。
知恵の輪としては面白いけれど、成果には乏しいのでないか。
253: 2019/12/13(金)13:58 ID:+ky049vi(1) AAS
それを言っちゃあおしまいよ
254(1): 2019/12/13(金)20:04 ID:For+FbwN(2/2) AAS
なんか、返事するのがアホくさくなってきました。
さようなら。
255: 2019/12/13(金)23:44 ID:gNHNDwLS(1) AAS
awkはまずデータファイルありきで便利なものだしねえ。
趣味でどういう使い方しても勝手だけど。
256: 2019/12/14(土)09:10 ID:b3dqliHo(1/2) AAS
>>254
Perl を知っていながら awk でやろうってんだから、この程度のことは予想できたでしょう。
無視してりゃいいんだよ。
もっとも、真剣に取り組んでいるなら他の場所を探してもいいかもしれない。
でもここにも君を助けようとした者がいたことは覚えておいてほしい。
257(1): 2019/12/14(土)09:34 ID:b3dqliHo(2/2) AAS
あっ、某知恵袋はやめときなさい。あそこは知ったかぶりが多いから。
知らないなら回答しなきゃいいのにね。
258: 2019/12/14(土)10:22 ID:pIVSIbEK(1) AAS
>>257
Linuxオタが集う外国の掲示板当たりの良いのかもな
普通のLinuxユーザーなら、awkにこだわりすぎの変な奴だになって
相手にしてはいけない・からかってやれだろうからな。
259: 2021/02/19(金)05:12 ID:m+sRJxZf(1) AAS
>>249
bashはreadline組み込まれてるので使って良いんじゃないかな?
あとライン毎にバッファしてるのが問題な気がするから、stdbuf cmdでcmdの参照してるstdlibをすり替えられて、一文字毎にflushする用に出来たりするがどうだろう
260(2): 2021/12/29(水)17:13 ID:2+qwQ610(1) AAS
busyboxのお陰でやっとwindowsでawkを使う気になれた
やっぱり良いツールだな
261: 2022/01/10(月)19:56 ID:CxUz26hu(1) AAS
winget install awkで入る(g)awkじゃいかんの?
今のところ困った事はない
上下前次1-新書関写板覧索設栞歴
あと 72 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s