awkについて語るスレ $3

2020/09/14(月) 12:37:48.22ID:ewkQANK9
腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ

◆ 前スレ
awkについて語るスレ $2
https://mevius.5ch.net/test/read.cgi/tech/1172242542/

◆ 参考
The AWK Programming Language (Brian Kernighan):
ttp://cm.bell-labs.com/cm/cs/awkbook/index.html

GAWK (GNU Projedt):
ttp://www.gnu.org/software/gawk/
67デフォルトの名無しさん
垢版 |
2024/06/18(火) 07:59:20.89ID:7l1MdKKx
awkで日本語を扱うとかチャレンジャーだな
書籍の出版が最近のものほど良いという謎の判断をする初心者が増えたよな。
68デフォルトの名無しさん
垢版 |
2024/06/18(火) 08:01:35.49ID:7l1MdKKx
シェルスクリプト内で使われている意味すら知らないなんて順番がおかしい。
2024/06/18(火) 08:22:22.42ID:rmcc/tYz
ガウォーク
70デフォルトの名無しさん
垢版 |
2024/06/18(火) 09:03:03.70ID:7l1MdKKx
最近までいた職場もキータの記事を引用していたな
怖い
71デフォルトの名無しさん
垢版 |
2024/06/18(火) 09:07:04.68ID:7l1MdKKx
gawkの宣伝が混ざっているスレか
72デフォルトの名無しさん
垢版 |
2024/06/18(火) 10:26:57.44ID:K2nHM9ZT
>>65
何のお話しでつか
73デフォルトの名無しさん
垢版 |
2024/06/18(火) 11:47:17.44ID:Li8KIoEM
>>72
twitterでawkを検索
2024/06/18(火) 13:24:24.39ID:Yg9xtfWz
awkでC言語のソースを自動生成したことあるぞ
30ウン年前
三角関数のテーブル
360度を256等分して、2バイト符号付き整数でsinとcosが32768分のいくつかっていうのを並べたテーブル
2024/06/18(火) 13:55:32.44ID:Yg9xtfWz
Copilot

それは非常に興味深いプロジェクトですね。AWKを使ってC言語のソースコードを自動生成するのは、特に数学的な計算やデータ処理が必要な場合に便利です。三角関数のテーブルを生成するというのは、特に組み込みシステムやリアルタイムアプリケーションで役立つことでしょう。

AWKはテキスト処理に特化したプログラミング言語であり、行単位のデータを処理するのが一般的な使い方ですが、プログラミング言語としての機能も備えているため、行単位のデータ以外を処理することも可能です。

例えば、360度を256等分して、各角度に対するsinとcosの値を2バイト符号付き整数で表現するテーブルは、以下のようなAWKスクリプトで生成できます。

BEGIN {
 for (i = 0; i < 256; i++) {
  # 角度をラジアンに変換
  rad = i * (2 * 3.14159265358979323846 / 256);
  # sinとcosの値を計算
  sin_val = int(sin(rad) * 32768);
  cos_val = int(cos(rad) * 32768);
  # テーブルに値を出力
  printf "%d, %d,\n", sin_val, cos_val;
 }
}

このスクリプトは、0度から355度までの各角度に対して、sinとcosの値を計算し、それを32768でスケーリングして整数に変換し、テーブルとして出力します。AWKは数値計算にも対応しているため、このような用途にも適しています。

もし現代の環境で同様のテーブルを生成したい場合は、AWKだけでなく他のツールや言語を使う選択肢もありますが、AWKはそのシンプルさとポータビリティで依然として有用です。もし何かお手伝いできることがあれば、お知らせください。
76デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:14:13.16ID:K2nHM9ZT
>>73
この人でつか。
ttps://x.com/hirayamaxkakeru/status/1801232615200198879
本が改訂されたとはいえ平積みされたことに驚いた。
77デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:14:49.73ID:7l1MdKKx
キャラクタセットの情報が与えられてないぞ?
78デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:17:07.68ID:7l1MdKKx
>>76
なんかなぜ書籍のタイトルで探しているのかわからないポンコツだよな

宣伝なのかもしれないけど
79デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:18:38.82ID:7l1MdKKx
いまどき学歴を書く古いスタイルもわからない
80デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:21:06.45ID:7l1MdKKx
>>76
別の投稿を見ると自慢だらけでゲロが出そう
2024/06/18(火) 14:22:11.28ID:Li8KIoEM
>>76
そう
この経歴で全く知らないってことはあるんかって思った次第
2024/06/18(火) 14:23:47.05ID:Li8KIoEM
真面目に勉強してきて本当に知らないのであれば
我々が想像以上に今の若手エンジニアの技術は偏ってるんだろうな
もはやLinuxすら触ることをしていない可能性
83デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:38:57.57ID:7l1MdKKx
bashのスクリプトからawk、sedならわかるんだが、awk単独でどうとか

アマゾンのレビューで吉田というやつのみが5つ星で、この吉田のプロフィールがヒラヤマというXに繋がっている可能性がある

あまりに読んでなさすぎだと思ったら、読んでないんだな

オライリーの「sed & awkプログラミング 改訂版」には触れない、他の出版会社の書籍には触れないなど二人とも違和感がある
84デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:44:06.94ID:J2T1cvE/
>>66
Rは死んだんだっけ
2024/06/18(火) 14:46:35.23ID:J2T1cvE/
>>73
確かに perl 使い始める前は awk 使ってたの思い出した
86デフォルトの名無しさん
垢版 |
2024/06/18(火) 14:56:45.90ID:J2T1cvE/
>>83
尼のレビューで awk の吉田観に行ったら
ヤバマン - サレ妻の秘密の離婚準備 ってのがおすすめされるんだがなんでなん
2024/06/18(火) 16:54:28.15ID:Yg9xtfWz
検索エンジンでなくAIに聞く練習をしてみた


自分

"awk gentab.awk -h" とやればヘッダが生成され、"awk gentab.awk -s" とすればソースが生成されるようにするにはどうすればいいんでしたっけ。


Copilot

AWKで特定のオプションに応じて異なる出力を生成するには、コマンドライン引数を処理するロジックをスクリプトに組み込む必要があります。-h オプションでヘッダを、-s オプションでソースを生成するようにするためには、以下のようなAWKスクリプトを書くことができます。

https://ideone.com/0gT1PT

このスクリプトは、コマンドライン引数をチェックして、-h が指定された場合はヘッダファイルの内容を、-s が指定された場合はソースファイルの内容を出力します。exit ステートメントは、それぞれのセクションの出力後にスクリプトの実行を終了させるために使用されます。

スクリプトを gentab.awk として保存した後、以下のコマンドを実行することで、それぞれのファイルを生成できます。

awk -f gentab.awk -h # ヘッダファイル生成
awk -f gentab.awk -s # ソースファイル生成

AWKスクリプトの詳細な使い方やオプションについては、オンラインのマニュアルやドキュメントを参照すると良いでしょう。もし他にも質問があれば、お気軽にどうぞ。
2024/06/18(火) 17:12:04.60ID:Yg9xtfWz
ええっと、これを貼らなきゃ見えないのかな

https://ideone.com/e.js/0gT1PT
89デフォルトの名無しさん
垢版 |
2024/06/18(火) 18:24:04.44ID:7l1MdKKx
2024/06/18(火) 19:12:23.97ID:Yg9xtfWz
こういう、固定小数点の三角関数が欲しい時にawkに生成させる話さ


short sin_table[] = {
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
};

short cos_table[] = {
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
};
91デフォルトの名無しさん
垢版 |
2024/06/18(火) 19:17:40.22ID:7l1MdKKx
何を勘違いしているの
92デフォルトの名無しさん
垢版 |
2024/06/18(火) 19:19:23.73ID:7l1MdKKx
生成AIは的確な仕様を伝えてないといけない
2024/06/18(火) 19:32:36.51ID:Yg9xtfWz
>>74で伝えてるじゃん
94デフォルトの名無しさん
垢版 |
2024/06/18(火) 19:40:43.38ID:7l1MdKKx
>>93
それが合っているのかどう確認したのですか?
生成AIは正解を教えるわけではありません。
2024/06/18(火) 19:48:33.05ID:Yg9xtfWz
>>94

>>90を見ればちゃんとだいたい三角関数になってるじゃん
簡単のため256等分を32等分にしようって提案しただけ
96デフォルトの名無しさん
垢版 |
2024/06/18(火) 21:32:43.98ID:Yg5iVeQt
マジレスすると 0度〜45度 の余弦だけあれば十分です
2024/06/18(火) 21:38:40.47ID:Yg9xtfWz
>>96
それをループ展開するのさ
98デフォルトの名無しさん
垢版 |
2024/06/19(水) 09:13:33.08ID:Ml7xOhwE
>>75
ごめんその目的ならそれで良いけど
本来三角関数テーブルを造るのに[sin|cos|tan|asin|acos|atan|atan2]関数を使ったら負けだと思う
99デフォルトの名無しさん
垢版 |
2024/06/19(水) 10:07:13.56ID:0R72bU2b
作ったもの、生成させたものが想定どおりか確認する、テストするという概念がないのは、プログラマ以前の話だぜ?
2024/06/19(水) 15:24:43.01ID:Lm+h2XXV
ユニットテストなあ
sinとcosだけだったらテストしてもいいかもしれない
でもtanはどうする?
tanはsinやcosみたいに有限の範囲に収まっていない
つまりそのままではテーブルを持ちにくい
実際にはtanは個別のプログラムで必要とされる計算式において、
「有限の範囲に収まる、tanを含む部分式」というのがたいていあるはずだから、それのテーブルを持つ
それは単体でテストしても意味のないものだ
101デフォルトの名無しさん
垢版 |
2024/06/19(水) 19:35:36.17ID:IaB5ZLIm
>>100
それは仕様として決めること

四則演算のみの電卓だってどういう順番で計算するかは決まっていない

数学の誤差が小さくなる計算が正しいわけではない
2024/06/19(水) 23:53:27.29ID:Lm+h2XXV
https://ideone.com/peSwGS
103デフォルトの名無しさん
垢版 |
2024/06/21(金) 17:44:44.00ID:LwqdtCE6
>>102
なぜ自作の計算しているのかという部分があるそ?
104デフォルトの名無しさん
垢版 |
2024/06/21(金) 17:45:23.65ID:LwqdtCE6
awkでやる意味がないよ
2024/06/21(金) 18:34:17.72ID:r40UsctT
古い人なんじゃない?
昔はこういうテーブルよく作ってたよ
深層学習で使われるシグモイド関数のテーブルとか
浮動小数点数のレジスタが遅かったり
貧弱な計算資源の計算機だとかなり有用
2024/06/21(金) 18:38:13.51ID:wIxdZD1d
>>103
安いハードウェアでも速いから
107デフォルトの名無しさん
垢版 |
2024/06/21(金) 23:08:53.44ID:LwqdtCE6
OSの標示コマンドを自作してしまう人間はまだいるからなあ。
108デフォルトの名無しさん
垢版 |
2024/06/24(月) 00:16:12.40ID:sso3G8sO
アマゾンの
「プログラミング言語AWK 第2版」

コメントなしの5つ星レビューが追加された
転○目的の中古が値崩れし始めている

めがベンチャーくんの宣伝じゃ売れないよ!
109デフォルトの名無しさん
垢版 |
2024/06/24(月) 08:32:33.18ID:snwWNZSk
>>108
これか。
ttps://www.%61mazon.co.jp/product-reviews/4814400705/
評価した人数が僅か2人なので、宣伝だとしても効果は薄そう。
110デフォルトの名無しさん
垢版 |
2024/06/24(月) 14:01:48.24ID:OzsKCRyN
https://x.com/hirayamaxkakeru/status/1801232615200198879
https://x.com/hirayamaxkakeru?t=6IXjFVaAG6iUPmY3jYVlIA&s=09

こういう人もいるんだな。都知事選の政見放送みたい
2024/06/24(月) 15:08:37.60ID:kN0svtrZ
awkでやる意味がないよ
2024/06/24(月) 15:22:42.93ID:qmamFw0P
AWKを使ったことないは理解できるが名前すら知らないって最近の人はこんなのばっかなの?
怖いんだけど
使ったことないはまだ理解できるけど
名前すら知らないって
113デフォルトの名無しさん
垢版 |
2024/06/24(月) 17:22:13.19ID:FfGi9EOd
>>110
>>65 と同じ話を何で何度もすんねん。
2024/06/24(月) 18:41:22.73ID:OzsKCRyN
ごめんチャイ、気が付かなんだ
115デフォルトの名無しさん
垢版 |
2024/06/25(火) 13:37:20.72ID:ZtCD4zFU
おじいちゃんお薬の時間です
2024/06/25(火) 14:42:15.39ID:Z9mp1IOT
薬はまだかね?
代金は受け取っただろ。
117デフォルトの名無しさん
垢版 |
2024/06/26(水) 00:52:44.98ID:yv8Z2CuH
都知事選もとりあえずポスターに「AI」と書いておけばいいみたいな雑な扱い
2024/06/26(水) 12:32:40.93ID:j6fp+f8B
これほど乱れた都知事選になるとは
2024/06/26(水) 14:58:55.42ID:hXpRZohR
民主政治の末期症状見てるみたいな気分になる
制度改革が必要だな
120デフォルトの名無しさん
垢版 |
2024/06/26(水) 21:32:42.48ID:yv8Z2CuH
都知事選でAIがどうこう言っている立候補者はすべてレベルが低い。
121デフォルトの名無しさん
垢版 |
2024/06/27(木) 10:11:18.36ID:OTNDZ+yC
スレチ
122デフォルトの名無しさん
垢版 |
2024/08/22(木) 05:50:05.33ID:0OofYQEx
AWKは単独で使うものじゃないけど、プログラミング言語と言い出す人間は、ほとんど素人だ。
123デフォルトの名無しさん
垢版 |
2024/08/22(木) 11:19:47.79ID:IKT838Oo
HTML5よりはプログラミング言語ωだな
124デフォルトの名無しさん
垢版 |
2024/08/22(木) 11:23:05.76ID:0OofYQEx
HTML5は終わりましたけど?
125デフォルトの名無しさん
垢版 |
2024/08/22(木) 14:07:14.76ID:BM6SBb1s
>>122
> プログラミング言語と言い出す人間は、ほとんど素人だ。

The AWK Programming Language の著者の Aho、Kernighan、Weinberger のことか。
126デフォルトの名無しさん
垢版 |
2024/08/22(木) 17:16:28.07ID:0OofYQEx
>>125
そう。それを読んでプログラミング言語と説明するニワカが昔からいる
127デフォルトの名無しさん
垢版 |
2024/08/22(木) 18:36:32.87ID:faui27PU
>>126
読んだニワカでなく、Programming Language と書いた人はどうなの? って。
ニカワのように貼りついてすまんが。
128デフォルトの名無しさん
垢版 |
2024/08/22(木) 20:11:53.65ID:0OofYQEx
>>127
AWKはプログラミング言語として使われることはほとんどない。

しかも作った彼らは、プログラミング言語というよりはsedのような使い方をするものとして用意している。

つまり、実際にはシェルスクリプト内の一部だったり、プログラミング言語というのはプログラミング言語の内のプログラミング言語であるから、そこまでわからずに「プログラミング言語」と言ってしまうと知識がないのとがばれる。
129デフォルトの名無しさん
垢版 |
2024/08/22(木) 20:13:29.79ID:0OofYQEx
>>127
その3人はAWKを作ったひと本人

別の人間がAWKを説明しているわけではない
2024/08/23(金) 06:04:36.15ID:yV+TW/F+
なにか嫌なことでもあったのか?
131デフォルトの名無しさん
垢版 |
2024/08/23(金) 14:32:57.60ID:TJ+3Kp9a
awkはfilter用に特化したプログラミング言語
はい
おしまい
2024/08/26(月) 00:32:32.66ID:mcDGuhqL
アスペはモノの呼び名に無意味にこだわるよな
力の入れどころがピントズレてるから何事も成し遂げられない無能😨
133デフォルトの名無しさん
垢版 |
2024/08/26(月) 01:02:38.84ID:cg8iPsZ2
AWKは高機能コマンドという位置づけ
これをプログラミング言語と説明し始める技術者が昔からいる

他人が言ったことの受け売りだからAWKの使われ方を説明できない
134デフォルトの名無しさん
垢版 |
2024/08/26(月) 10:39:29.32ID:3+7ACU+U
HTML5はプログラミング言語プルプル
135デフォルトの名無しさん
垢版 |
2024/08/26(月) 11:00:10.36ID:ln9LIwsB
>>133
この辺りが受け売り?

> プログラミング言語と言い出す人間は、ほとんど素人
136デフォルトの名無しさん
垢版 |
2024/08/26(月) 17:26:29.31ID:VJ190nsi
AWKの書籍やAWKの紹介の初めにプログラミング言語と書かれているので、そこだけを読み取って他人にAWKをプログラミング言語と説明するのが恥ずかしいということ。

awkコマンドの引数に手続き処理の文字列を指定できるだけで、AWKは単独で何かの処理を完結させるものではない。

毎回、長いAWKのコマンドを打ち込む人間だったら当てはまらないが、今度は再利用という概念がないことになるのでやはりおかしい。

テストでも毎回、キーボードから打つ初心者はいる。コピーという概念もなければ、ファイルにしてファイルを読み込むという発想すらない。

そこでシェルスクリプトを使うべきと説明しても、キーボードの手打ちにこだわってキーボードのキーを強打するやつはキーボードを叩くのが好きなので、キーを打つ回数が多くないと不機嫌になる。
137デフォルトの名無しさん
垢版 |
2024/08/26(月) 18:36:31.89ID:FhzwHLyM
CGIはプログラミング言語(キリっ
138デフォルトの名無しさん
垢版 |
2024/08/26(月) 18:39:41.56ID:FhzwHLyM
>awkコマンドの引数に手続き処理の文字列を指定できる

引数の - (stdinを意味する) とか
teeとかしらんのか
2024/08/26(月) 19:36:00.43ID:1zt/vBon
まあこういう考えもあるのかと思っておけばいいのでは
理解とか説得とかじゃなくて、読んでる人が誤解しそうだからのコメントだったら
読む人のためになると思うが
140デフォルトの名無しさん
垢版 |
2024/08/26(月) 20:15:21.46ID:VJ190nsi
>>138
それはawkの話ではない。
141デフォルトの名無しさん
垢版 |
2024/08/26(月) 20:17:18.06ID:VJ190nsi
わざわざロジックをawkに担当させるのは趣味が悪すぎる
142デフォルトの名無しさん
垢版 |
2024/08/26(月) 21:08:03.62ID:ln9LIwsB
$ date '+%s'
1724673881
てコマンドオプションが思い出せなくて、

$ gawk 'BEGIN{ print systime() }';
1724673881
で代用することあるある。
2024/08/26(月) 22:58:23.62ID:R6Owoni0
>>140
引数の-を解釈するのはawkだけどな
144デフォルトの名無しさん
垢版 |
2024/08/27(火) 00:41:01.50ID:jPnUMQmz
UNIXはハイフンを特殊文字として扱う仕様になっている。
145デフォルトの名無しさん
垢版 |
2024/08/27(火) 14:15:08.68ID:oHcafaf7
ぶっちゃけperlとかpython覚えたらawk要らんけどね
146デフォルトの名無しさん
垢版 |
2024/08/27(火) 15:17:22.25ID:apM/pcD7
ぶっちゃけ awk覚えたら sed要らんけどねてのは一面真実なのだけど、sedは記述が短くて手放せないてのも、事実だったりする。
147デフォルトの名無しさん
垢版 |
2024/08/27(火) 16:41:08.74ID:236o/Knq
>>145
コンピューターの性能が上がったせいで、awkの出番がなくなった。
2024/08/29(木) 09:38:52.02ID:1jszJs3n
awkは紛うこと無きプログラミング言語(キリっ
2024/08/29(木) 11:08:24.17ID:Ju1sdRVj
awkでもpythonでもrubyでもsedでもソースを見ればどの言語かわかる
ごっちゃまぜでも問題なく実行する何でもOK言語は作れないのだろうか
2024/08/29(木) 12:14:04.63ID:1jszJs3n
token分割した単位でも区別出来れば楽だろうけど
ある程度の文脈で観ないと判らんのでは
2024/08/29(木) 13:15:32.38ID:CUm3HRgm
ごちゃまぜとはいかんが、Perl で Inline でも使ってみる?
https://perldoc.jp/docs/modules/Inline-0.43/Inline.pod
awk も ruby も python もサポートされてるぞ。
152デフォルトの名無しさん
垢版 |
2024/08/29(木) 23:44:22.19ID:N4XBWKhx
要は知ったかぶりがしてしまう説明はやめろということ。
153デフォルトの名無しさん
垢版 |
2024/08/30(金) 07:45:14.66ID:FeMupkVu
知ったか。これか。

> AWKは単独で使うものじゃないけど、プログラミング言語と言い出す人間は、ほとんど素人だ。
154デフォルトの名無しさん
垢版 |
2024/08/30(金) 09:29:41.59ID:742oYIEC
awklandωωω
2024/08/30(金) 11:21:27.27ID:qi4n2TPj
まあ、そうだな。知ったかぶりはかっこ悪いな。
……これでいいか?
煽ってるわけじゃなくてな、これ以外に何を言えばいいのか…
156デフォルトの名無しさん
垢版 |
2024/08/30(金) 12:40:15.18ID:bLuOfswJ
awkland紛争勃発
157デフォルトの名無しさん
垢版 |
2024/09/07(土) 11:40:55.97ID:LaGZ4PBX
フーン
158デフォルトの名無しさん
垢版 |
2024/09/13(金) 16:25:22.25ID:bblj+c3p
He does not talk that much about.
159デフォルトの名無しさん
垢版 |
2024/09/15(日) 09:55:25.02ID:xw1jp1Zr
もしかしてforkland紛争
2024/11/03(日) 03:38:13.75ID:ijDiZ2E7
>>145
perlはまだしもpythonは代わりにならんでしょ
最も正当な後継はpwsh(PowerShell)だろう
perl同様BEGIN/END、$OFSとかもある明確なawkフォロワー
perlはサブルーチンは全部subrキーワードで定義するが、pwshはfunctionで定義するシェル関数(function)と別にfilterキーワードで定義するパイプライン志向のフィルタ関数もあってawkよりawk的に書けるまである
2024/11/09(土) 16:29:19.19ID:7k73fm7R
標準出力に対していきなり$1とか書けるのは
何でもできるインタプリターとはまた違う利便性だな
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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