awkについて語るスレ $2

レス数が1000を超えています。これ以上書き込みはできません。
2007/02/23(金) 23:55:42
腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ

◆ 前スレ
awkについて語るスレ
http://pc10.2ch.net/test/read.cgi/tech/1023556171/

◆ 関係スレ
シェルスクリプト相談室
http://pc10.2ch.net/test/read.cgi/tech/1112553783/
AWKでCGI
http://pc10.2ch.net/test/read.cgi/php/1171804314/
【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc10.2ch.net/test/read.cgi/linux/1154578200/

◆ 参考
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/
920デフォルトの名無しさん
垢版 |
2019/03/21(木) 14:19:16.55ID:pGDO/F2C
>>919
ありがとうございます。
そっか。returnがいるんですね。
perlだと最後はreturn省略可能だけどawkは省略不可みたい。
あと、引数名も間違っていました。
正しい答え出ました!
2019/03/21(木) 21:25:33.68ID:ZeSQsBE1
それぐらいの処理は、Ruby で作れ!
2019/03/21(木) 23:54:47.78ID:7AyLRSvD
オーク英雄物語 〜忖度列伝〜
https://ncode.syosetu.com/n8418ff/1/ 👀
Rock54: Caution(BBR-MD5:0be20a4887bc3d3353f527d3636c44e3)
2019/04/01(月) 17:01:28.78ID:nwflCE8J
>>921
awkの方がいいときもある

installしなくていい
タスクマネージャでみているとrubyよりメモリを食わない時もある
融通の利く配列が超便利

通信、Hash、sortなど使いまくる時はrubyのほうがいいけど
924デフォルトの名無しさん
垢版 |
2019/04/01(月) 17:12:08.21ID:Tc5+6fel
いや、Perlだ。

理由
俺が慣れてるから。
2019/04/01(月) 22:48:54.89ID:0AqZLgzF
Perlはまぁ慣れ以外に使う意味はあまり見出せない。
2019/04/02(火) 04:44:16.86ID:3dIjgbOm
漏れは、Windows 10・WSL・Ubuntu 16.04 だけど、
sudo apt install ruby だけで、Ruby 2.3 が入った

2.4 以降の新しい書き方さえしなければ、動く

Perl, Python は、最初から入っているけど
2019/04/02(火) 10:00:50.55ID:USFH8Mum
>>926
死ね
2019/04/02(火) 10:29:57.68ID:egwP5Lwa
Perl脳だとdieなどと言いたがるんかね。
929デフォルトの名無しさん
垢版 |
2019/04/02(火) 12:24:56.71ID:exqjvsIl
Perl die好き
2019/04/02(火) 12:34:58.56ID:m0agfZtU
931デフォルトの名無しさん
垢版 |
2019/04/17(水) 15:16:55.69ID:bLXqfCqA
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環境が想定されるようになっています。

そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
932デフォルトの名無しさん
垢版 |
2019/04/17(水) 17:19:50.38ID:fsOEjVgH
sedとawkで簡単にできることを
他の方法でやってるアホを見ると優越感に浸れるよな
2019/04/17(水) 21:27:37.50ID:Cw3S472M
5.0.0じゃなくて4.3.0でいいじゃんって更新内容だな・・・
2019/04/17(水) 23:57:17.65ID:t5VcExa0
今時っぽく定期的にメジャーバージョンアップしていく作戦?
そろそろAWKCARD印刷してみようかな…
935デフォルトの名無しさん
垢版 |
2019/04/18(木) 00:37:48.90ID:y8/6ebia
>>932
簡単な変換なのにWindowsとかでいきなりExcelでやろうとしちゃう人を見るとそこまでせんでも良いじゃないかとは思ってしまうな。
まあ日頃Windowsで事務処理的な事している人からすればそれ以上最良で分かりやすい環境はないんだろうけどな。
なんでもかんでもそれでやろうとして余計に分かりづらく複雑になってうまく行かずにハマっているのを見ると哀れに感じる。
2019/06/01(土) 01:13:44.70ID:QInzSHhj
こういう記法ができることを知らず、気づくのに数年かかった
正規表現比較のifで変数を使える、gsubなどで変数を使える

txt=”aabbcdefg1234”
x=”^” substr{$0,1,1} ”+”
if {txt 〜 x}print ”ok”

y=substr{$0,1,1}
z=substr{$0,2,1}
gsub{y,z,$0}

(半角だと書き込みエラーになるので全角に変換)
2019/06/01(土) 01:15:01.39ID:QInzSHhj
>>936
あれ変換おかしい
{} → ()
2019/06/01(土) 05:25:56.80ID:cEFw76xP
ふふふ知ってた。
2019/06/05(水) 00:27:37.11ID:/Z5C9xDG
The AWK Programming Language (の邦訳本) から入ったので知ってはいるけど、
エスケープ文字を考慮してコードを書くのが面倒なので極力避けてるな。
文字列が正規表現へ「型変換」されるときの振舞いについて、本には一応書いてある。
940デフォルトの名無しさん
垢版 |
2019/06/19(水) 04:52:26.36ID:tVNS+22r
【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
2019/06/30(日) 05:07:43.82ID:1ALBmyOB
AWKが巨大なテキストファイルを処理できないみたいな話を知ってる方いらしゃいますか。
大体1.4GiBくらいのファイルをAWKで編集しようとすると「ファイルの空きがない」みたいなエラーが出るので。
942デフォルトの名無しさん
垢版 |
2019/06/30(日) 12:11:04.21ID:QU2Ls1X6
UNIXというかまともなPIPE実装されてるOSならそんなことはないが
WINDOWSとかいうアホなOSだと出るだろうね
2019/06/30(日) 12:19:57.44ID:pDzbN/vc
「ファイルの空きがない」っていうメッセージは "No space left on device" の事?
2019/06/30(日) 15:28:11.21ID:o/HVRPYj
>>942
コマンドラインでリダイレクト使ってればそうかも知れんが
スクリプト内で出力先を指定してたらわからんぞー
2019/06/30(日) 21:02:48.49ID:1ALBmyOB
>>942
なるほど。
946デフォルトの名無しさん
垢版 |
2019/06/30(日) 21:56:09.12ID:HbSturrb
>>941
改行コードの違いにより全体が長い一行と認識されてしまい・・・なんて事はないか?

あ、でも、ファイルの空きがないってのは出力先の空き容量が足りないってことかな?
2019/07/01(月) 01:34:15.60ID:2smzn43h
>>943
そうです。
でもファイルシステムとしては全く余裕がある状態なんです。
948デフォルトの名無しさん
垢版 |
2019/07/01(月) 02:30:15.69ID:jjSXuURg
なんだろうね。作業用ファイルが作られるパーティションの空きが足りないとかかな?
2019/07/01(月) 02:35:44.08ID:KfVaWYci
64bit版か32bit版かで違わないか
1.4GBは入力で出力も同じなのかはるかに小さいのか
出力が速すぎることはないのか、ゆっくり出力するようにしたらどうか
950947
垢版 |
2019/07/01(月) 07:19:02.17ID:2smzn43h
>>948
すいません。これが原因でした。
AWKは全く悪くありませんでした。ご迷惑&&スレ汚し、大変失礼しました……。
2019/07/01(月) 07:38:04.28ID:O1pDJEnN
Ruby でも、File.read なら、ファイルの内容を、メモリ内にすべて読み込んでしまうから、
500MB 以上なら、読み込めずにエラーになるだろう

File.foreach なら、メモリ内に、1行ずつ読み込んでは捨てるから、大きいファイルでも大丈夫

まあ、RubyVM 起動時に、そのアプリが使うメモリのサイズを、指定できると思うけど。
JavaVM には、そういうオプションがある
952デフォルトの名無しさん
垢版 |
2019/07/02(火) 21:28:41.07ID:Stz7guhB
awkで dateを使ったのですが、秒数が更新されず悩んでます。仕様とかそういう情報ご存知のかた教えて
頂けないでしょうか
■ コード
BEGIN {
for( intCounter = 0; intCounter < 3; intCounter++ )
{
"date +\"%Y/%m/%d %I:%M:%S\" " | getline datTmp
print "Start:" datTmp
system("sleep 2")
}
}
END {
for( intCounter = 0; intCounter < 3; intCounter++ )
{
"date +%I:%M:%S" | getline datTmp1
print "End:" datTmp1
system("sleep 2")
}
}
■ 結果
Start:2019/07/02 09:18:36
Start:2019/07/02 09:18:36
Start:2019/07/02 09:18:36
End:09:18:42
End:09:18:42
End:09:18:42
■ 疑問
Start, End 共に最初の 1 回目のみ秒数が取れているようで、2回目からは2秒後のはずなのに、秒数が変わっていない orz..
953952
垢版 |
2019/07/02(火) 21:47:38.82ID:Stz7guhB
お騒がせしました。自己解決しました。
https://stackoverflow.com/questions/2391272/gawk-awk-piping-date-to-getline-sometimes-wont-work
closeを使う必要が有ったようです。
■ コード
BEGIN {
for( intCounter = 0; intCounter < 3; intCounter++ )
{
"date +\"%Y/%m/%d %I:%M:%S\" " | getline datTmp
print "Start:" datTmp
system("sleep 2")
close("date +\"%Y/%m/%d %I:%M:%S\" ")
}
}
END {
for( intCounter = 0; intCounter < 3; intCounter++ )
{
"date +%I:%M:%S" | getline datTmp2
print "End:" datTmp2
system("sleep 2")
close("date +%I:%M:%S")
}
}
■ 結果
Start:2019/07/02 09:44:49
Start:2019/07/02 09:44:51
Start:2019/07/02 09:44:53
End:09:44:55
End:09:44:57
End:09:44:59
2019/07/03(水) 06:22:07.32ID:IYY9eTuR
gawkなら時間関数群あるんじゃ。
2019/07/04(木) 01:05:04.08ID:vxwYTSOB
ここいいね。Web上でawkの実行とその結果が見れるサービス。
https://www.tutorialspoint.com/execute_awk_online.php
2019/07/05(金) 19:29:13.12ID:p9vBdDGq
           fi
          、Jj
           Й 
         /⌒ヽ
         l_ 0..0
          }{ l冊
        -=-v=-
        }{ 彡ミノ{
        }{ 非 }{
        匁OTO)匁
         }{ }{
         }{ }{
         及 及
957デフォルトの名無しさん
垢版 |
2019/08/05(月) 11:42:29.38ID:N86fIT/u
Windows10 のコマンドプロンプトで awk を使いたいです。
vector で検索するといろいろでてくるのですが、
これがお勧めっていうのありますでしょうか。
日本語も扱えるのがいいです。
よろしくお願いします。
2019/08/05(月) 11:44:36.72ID:MNXFY7cg
Windows 10なら、標準機能のWSL(+Ubuntu)をインストールするのが一般的
vectorとかもうあんなのいらない
959デフォルトの名無しさん
垢版 |
2019/08/05(月) 12:04:58.85ID:N86fIT/u
WSLって使ったことなかったんですけど、
ググってみたらもう Win で Linux が標準で使えるんですね。
これなら cygwin とかも、もういらないのかな。
情報どうもです。
2019/08/05(月) 12:06:14.91ID:MNXFY7cg
cygwinもいらない。遅いし互換性低いし
961デフォルトの名無しさん
垢版 |
2019/08/05(月) 12:06:57.54ID:NOA3rn3w
WSL って pro だけ?
home だったら付いてない?
msys とか入れれば解決するけど
962デフォルトの名無しさん
垢版 |
2019/08/05(月) 12:18:30.48ID:N86fIT/u
マイクロソフトもビルゲイツがいなくなって
多少は良い事もするようになったかな。
963デフォルトの名無しさん
垢版 |
2019/08/05(月) 12:33:33.70ID:LhsszH09
>>962
いや、まだ足りない。何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
まあ仕方のないことではあるがな。
2019/08/05(月) 12:42:57.45ID:MNXFY7cg
WSLはhomeでも使える。WSL2も使えるようにすると発表があった。
2019/08/05(月) 12:59:49.23ID:MNXFY7cg
>>963
> 何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。

それがLinuxでも動くようになり、Windowsのライセンス料もかからなくなってきてるから
最近のMSの評判が抜群に上がってるんだろ
2019/08/05(月) 15:30:49.20ID:VYzH3PNA
>>962
windows育ちでないunix系を知っている今のCEOに変わってから変化し始めた
ダメな旧MS文化からunix系やandroid系に転換をはかっている
ダメだったのは前CEOバルマー
2019/08/05(月) 17:45:26.88ID:QFC6lZK5
いっそのこと UNIX のカーネルに Windows のシェルを
被せてもらいたいですね。
Mac はもうそうなってるし。
2019/08/05(月) 17:59:46.21ID:MNXFY7cg
そのわりに、MacってUNIXを全然活かせてないよな?
forkは遅いし、仮想マシン使ったほうがMacよりも速いし。
2019/08/05(月) 18:09:58.23ID:MNXFY7cg
まあ、AppleはUNIXを真似ることしかできなかったわけで
UNIXと双璧をなす独自OSを作り上げたMSと同じことをしろというのも酷な話だが、
UNIX/Linuxを取り込むなら、WSLと同じ仕組みで十分な気がする。

あとAppleが運が悪かったのは、Linuxがここまで普及すると予測できなかったことかな
BSD系を採用しちゃったので、Linuxとコマンド体系が微妙に変わってしまった。
標準でUnixコマンドが搭載されてるにも関わらず、サードパーティのHomebrewを使って
Linux互換(GNU版)のコマンドに置き換える人も多いし。
2019/08/05(月) 20:09:15.04ID:oBMYP5f0
> UNIXと双璧をなす独自OSを作り上げたMS
ゴミをでっち上げ、OSとかよく解らない池沼層に売っただけ。
971デフォルトの名無しさん
垢版 |
2019/08/05(月) 20:51:07.86ID:LhsszH09
MSはOSというよりはUIを作った感じだな。
2019/08/05(月) 21:05:19.12ID:MNXFY7cg
>>970
嫉妬すんなよw 事実は受け入れようぜw
2019/08/05(月) 21:12:10.12ID:O6CFE/yb
マクドナルドのハンバーガー並に普及した
2019/08/05(月) 22:10:04.48ID:o5dspg/Y
macOSの前身のNEXTSTEPは技術的には絶賛されてた
macOSは中身ほぼNEXTSTEPで見た目をモダンにしただけだ
975デフォルトの名無しさん
垢版 |
2019/08/06(火) 14:52:58.06ID:SvihPrAV
マルチユーザーマルチスレッドωωω
2019/08/06(火) 17:42:44.33ID:9obbnMlM
> macOSの前身のNEXTSTEPは技術的には絶賛されてた

でもUNIXの割にforkが遅いんだよな
cygwin使ってるのか?って思っちゃうぐらい。
977デフォルトの名無しさん
垢版 |
2019/08/06(火) 20:48:47.73ID:ePqW8mte
スレッドも遅いの?
2019/08/07(水) 00:04:17.07ID:NEAc+E18
>>976
forkが速くて称賛されてた訳じゃないからな…
ちなみにforkの速度は今時そんなに重要じゃないぞ
もしそれで困ってるならスレッドを使うとか事前にプロセスを起動して置くなりすればいい
2019/08/07(水) 00:33:23.13ID:WK8NJ3/V
でもそうするとWSLで十分じゃね?という話になる
2019/08/07(水) 01:24:29.79ID:NRK0ob+d
新手のスレ埋め立てかw
981デフォルトの名無しさん
垢版 |
2019/08/07(水) 04:38:27.64ID:/UJIAec/
>>969
そんなこと気にする人ってどれくらい居るんだろう
CPUですら68、PowerPC、x86と変えてきて
OSは独自、BSDと来たもんだ
多くの人は中身を気にせず使ってるのに

自分は元マカーだけど今は1台も持ってない
でもファッションでMacBookいいカナと思うよ
仕事はITのエンジニアで商用UNIX使ってるけど
コマンドなんてどうでもいいわ
好きなところにログインすれば言いだけなんだから
2019/08/08(木) 01:24:30.39ID:X/CTiqlR
| awk -F: '! /BINARY/ {print $1}'\

正規表現無しの簡潔な部分はperl -lane より短くて最高
2020/08/02(日) 11:03:40.06ID:mglN/rTr
>>982
短かいのが正義!とは思わないけど、
perlと違ってSUSで定義されてるのがありがたいね。
984デフォルトの名無しさん
垢版 |
2020/08/02(日) 17:25:58.24ID:IlYSPDQE
ファッションでというと、写真撮影しているオシャレな感じのスタジオの受け付けにマックがあったのだが画面を見るとWindowsだったというのを見たことがあるな。
エミュでWindows動かしてそこで業務用のソフト動かして受け付け業務に使っているということだが、客から見るとディスプレイの裏側が主に見えるのでAppleマークが見えると。
2020/08/02(日) 19:24:52.35ID:mglN/rTr
>>984
誤爆?
986デフォルトの名無しさん
垢版 |
2020/08/03(月) 02:35:57.38ID:iGTWfWuc
>>985
>>981
987デフォルトの名無しさん
垢版 |
2020/08/03(月) 09:51:55.82ID:3aFKjSal
Aho
2020/08/03(月) 10:16:40.93ID:ZKD4yCvc
AWmae no Kachan debeso
989デフォルトの名無しさん
垢版 |
2020/08/03(月) 20:08:52.49ID:iGTWfWuc
awk の a は本当に Aho の略(人名)
2020/08/10(月) 14:00:21.38ID:l5zwQhnu
>>982 >>983
何事もないように書いてるけど実は1年空いてる
991デフォルトの名無しさん
垢版 |
2020/08/10(月) 14:01:04.64ID:l5zwQhnu
即レスも大概だが亀レスも大概やな!
2020/08/10(月) 22:16:10.09ID:DZgybkpe
AWesome Kame res
2020/08/13(木) 10:26:07.54ID:uwSNr/lm
真のawkerは多くを語らない。
awkを語らない…ナンチャッテ!
994デフォルトの名無しさん
垢版 |
2020/08/13(木) 16:09:43.86ID:GqR68DDy
は?
995デフォルトの名無しさん
垢版 |
2020/08/14(金) 13:41:25.37ID:H4TUvcZb
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'
996デフォルトの名無しさん
垢版 |
2020/08/14(金) 15:50:04.19ID:XKPWE/tl
http://www.manabu-oshieru.com/hyakunin/064.html
997デフォルトの名無しさん
垢版 |
2020/09/14(月) 11:09:07.94ID:c+iGp9gS
bashで小数点の比較をする方法にbcを使うという意見が多かった
けどawkの方がわかりやすいと思う
condition()
{
awk 'BEGIN { exit ! ('"$*"') }'
}

x=5.6; y=42.1
if condition "$x < $y"; then
echo true
else
echo false
fi
2020/09/14(月) 11:15:45.20ID:S/jhW9z+
bcはインストールされてないことが時々あるんで使わないね
まあその点はawkの方がマシだろう
999デフォルトの名無しさん
垢版 |
2020/09/14(月) 12:03:30.66ID:gMM3Z1ji
1000デフォルトの名無しさん
垢版 |
2020/09/14(月) 12:08:39.52ID:H3Bos02D
Aho Weinberger Kernighan
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 4951日 12時間 12分 57秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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