[過去ログ] awkについて語るスレ $2 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(1): 2007/02/23(金)23:55 AAS
腐っても鯛? 騏?も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語AWKについて語るスレ
◆ 前スレ
awkについて語るスレ
2chスレ:tech
◆ 関係スレ
シェルスクリプト相談室
2chスレ:tech
AWKでCGI
2chスレ:php
【sed】シェルスクリプト総合@LINUX Part2【awk】
2chスレ:linux
◆ 参考
The AWK Programming Language (Brian Kernighan):
外部リンク[html]:cm.bell-labs.com
GAWK (GNU Projedt):
外部リンク:www.gnu.org
876(1): 2018/03/10(土)21:39 ID:NqpdHf3N(1) AAS
こぴぺしてやってみたけど 両方消えちゃうんだよね
20 と 34があった場合 出力しない
片方でもあれば 出力する
awk '!/01 / && !/03 /' これも両方消えてる・・
877: なんか日本語がおかしいな。 2018/03/11(日)06:07 ID:rsmr5+n0(1) AAS
>>876
「20 と 34 を両方含む時だけ出力しない。片方だけの場合は出力する。」
そう言いたいのか?
gawk '!(/20/&&/34/)'
878: 2018/03/11(日)10:58 ID:tN+YLJlR(1) AAS
ありがとう
()はきがつかなかった・・
879: 2018/05/23(水)20:10 ID:Au5e7VGg(1) AAS
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
0VDE5
880: 2018/06/08(金)22:00 ID:W8HYHVfd(1) AAS
split関数より$0へ代入したほうが速いage
881: 2018/07/04(水)22:29 ID:gFgZc5FG(1) AAS
02P
882: 2018/07/05(木)16:52 ID:AeL6VB/V(1) AAS
0VDE5
883: 2018/09/11(火)09:26 ID:196Ukd9B(1) AAS
シェルスクリプト書いててどうしようもないときだけ使ってる
884(1): 2018/12/02(日)13:44 ID:jISJOvCb(1) AAS
AWKって重いと勝手に思ってたけど下手にシェルで制御構文作るより早いね
尤もWSLでやってるのでforkの時間とかそういう問題かもしれないが。
885: 2018/12/02(日)14:22 ID:Bx+z5yQP(1) AAS
>>884
重いと言ってもC比だからな。
今時の超大富豪言語PythonやRubyとなら同程度でもおかしくはない。
Cygwinのshが重かったのはご存じの通りforkが原因だ。
気になるならVirtualBox等でlinux環境を構築してその上でテストしてみればいい。
886(2): 2018/12/22(土)02:10 ID:V7w17XLB(1) AAS
gawk4にて配列の配列に存在する全要素数を
カウントする関数を作ったんですが、
もっと早いコードにならないでしょうか?
どなたかヒントをください。お願いします。
function count_array(arr, n, i) {
for (i in arr) {
if (isarray(arr[i])) count_array(arr[i], n);
else n[0]++;
}
return n[0];
}
887: 2018/12/22(土)02:57 ID:kZtDaodg(1) AAS
length(arr) でダメなの?
888(1): 2018/12/22(土)20:12 ID:VPYzPSxJ(1) AAS
886です。
ダメなんです。
BEGIN {
a[1] = 1;
a[2][1] = 21;
a[2][2] = 22;
a[3] = 3;
a[4][1][1] = 411;
a[4][2] = 42;
a[4][3][2][1] = 256;
for (i = 0; i < 9; i++) b[i] = i;
c["foo"]["corge"] = "grault";
c["foo"]["bar"] = "garply";
c["baz"]["corge"] = "waldo";
c["baz"]["quux"] = "fred";
print "length(a) = " length(a);
print "length(a) = " length(b);
print "length(a) = " length(c);
print "count_array(a) = " count_array(a);
print "count_array(b) = " count_array(b);
print "count_array(c) = " count_array(c);
}
length(a) = 4
length(b) = 9
length(c) = 2
count_array(a) = 7
count_array(b) = 9
count_array(c) = 4
再帰を使う以外に方法があれば、
と思い質問した次第です。
889: 2018/12/22(土)21:58 ID:b6CiPLFa(1/2) AAS
要素を追加するときに
ノード毎に集計値が必要ならそれぞれのノード毎の集計値を保存しとけばいい
そうすれば集計しなおす必要ない
超速いハズ
集計しないからな
890: 2018/12/22(土)22:19 ID:b6CiPLFa(2/2) AA×

891: 2018/12/22(土)23:48 ID:omdhpVTe(1) AAS
>>888
lengthは、配列aの要素に配列があると要素としての配列の
中の要素数まではカウントしない、やりたいのは要素としての配列に
含まれる要素もカウントしたい、ということか。
function count_array2(arr, cnt, i) {
n=0;
for (i in arr) {
if(isarray(arr[i])){
cnt+=length(arr[i]);
}
else n++;
}
return n;
}
だと
a[1] = 1;
a[2][1] = 21;
a[2][2] = 22;
a[3] = 3;
a[4][1][1] = 411;
a[4][2] = 42;
a[4][3][2][1] = 256;
a[4][3][3][2] = 257;
みたいなのでうまくいかない(1番目と2番目の添え字(?)が同じ)。
arr[i][j]...と続ければ(最初にlength(arr)で続ける深さを決めて)
いけるように思うが、だったら再帰するのが素直か。
892(1): 2018/12/23(日)00:54 ID:quoNoaXg(1/5) AAS
886です。889さんこんな感じでしょうか?
BEGIN {
addnode(a, "1-1", "start");
addnode(a, "1-2", "done");
addnode(a, "1-3", "result");
addnode(a, "1-4", "print");
addnode(a, "2", "count");
addnode(a, "3-1-1", "return");
for (i in a[1]) print "a[1][" i "] = " a[1][i];
print "a[2] = " a[2];
print "a[3][1][1] = " a[3][1][1];
print "\n_ele_sum = " _ele_sum;
}
function addnode(arr, i, val, p) {
ct = split(i, list, "-");
switch (ct) {
case 1: arr[list[1]] = val; break;
case 2: arr[list[1]][list[2]] = val; break;
case 3: arr[list[1]][list[2]][list[3]] = val; break;
default:
}
_ele_sum++;
}
a[1][1] = start
a[1][2] = done
a[1][3] = result
a[1][4] = print
a[2] = count
a[3][1][1] = return
_ele_sum = 6
893: 2018/12/23(日)01:05 ID:quoNoaXg(2/5) AAS
886です。
pとか関係ないパラメータ入れてしまってごめんなさい。
addnode(a, "1-5-1", "connot");
これができません。
a["5"]がスカラーだと言っています。
894: 2018/12/23(日)01:15 ID:quoNoaXg(3/5) AAS
訂正a["1"]["5"]がスカラーの文脈だと言っています。でした
895: 2018/12/23(日)01:41 ID:quoNoaXg(4/5) AAS
886です
for (i in a[1]) print "a[1][" i "] = " a[1][i];
でa[1][5][1]が引っかかっていたようです。
自爆でした。すみません。
896: 2018/12/23(日)02:59 ID:quoNoaXg(5/5) AAS
886です。
親ノード毎?に保存する方法がまだわかりませんが、
明日以降考えます。
みなさん、ご協力ありがとうございました。
897: 2018/12/23(日)08:49 ID:S8HMq/6c(1) AAS
gawk4でとにかく速いのが良いならcで拡張関数作るのが良いかと(反則?)
flatten_array_typed関数(4.1.4はflatten_array関数)でawk_flat_array_t構造体のメンバ変数countに要素数が入りますので
要素がAWK_ARRAYなら再帰するように処理すれば出来上がり
APIの使い方は
extension\rwarray.cとか
外部リンク[html]:www.gnu.orgを参考に
gawkだけでやる場合、もし配列の要素数が10万とか100万あるのなら、関数の引数を出来るだけ減らして
関数内からグローバル変数を直接参照したほうが速くなると思います
898(1): 2018/12/23(日)11:20 ID:qffc/3mK(1/2) AAS
もともと添え字がすべて文字列で保存する仕様というのはしってはいたが
多次元配列はaho[i,j]という形式にして工夫して使えということらしいな
awkで多次元配列なんか使ったことないから知らんかったわ
とういワケでにその形式で多次元配列をlengthでとると>>886で取得したい値になる
当然といえば当然
特定の次元の列だけのとりかたはよくわからん とれんのかコレ
外部リンク[html]:www.kt.rim.or.jp
Using Numbers to Subscript Arrays
配列について重要なのは、配列の添え字は常に 文字列として扱われるということである。
配列の添え字に数字を使った場合、それは添え字付けに使われる前に 文字列に変換される
外部リンク[html]:www.kt.rim.or.jp
Multi-dimensional Arrays
多次元配列とは、配列要素の指定を複数の添字の並びによって行う配列である。例え ば二次元の配列は二つの添字を必要とする。
一般的な(awkも含めた大多数の 言語では) 二次元配列の要素に対する参照は grid[x,y]このよ うに行う。 (gridは配列の名前)
セパレータには組み込み変数SUBSEPに格納 されている値が使われる。
899: 2018/12/23(日)11:43 ID:7N3pX2Wi(1) AAS
>>898
それを踏まえて>>886で
> gawk4
とわざわざことわっているんじゃないの?
900(1): 2018/12/23(日)22:29 ID:qffc/3mK(2/2) AAS
まず入力から多次元配列を読込む処理でも作ってみるか
できるのかがよく分からん
コレがすんなりできないとコレ自体が使えるシロモノにならなそうだしな
テストデータは作ってみた
外部リンク:ideone.com
awkのこの多次元配列についてほかのとこで書いてあるの読んでみると
色々と面倒なことがおきるはのは分かった
特に問題がおきそうなのは一度配列やスカラーで要素を追加すると、
その配列やスカラーを変えて上書きする場合明示的にそれを削除しないと上書きして使えない
きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
cのメモリリークと同じことが起きると推定される
いまいちこの多次元配列に使い道があるのかどうかが分からない
901: 2018/12/23(日)23:32 ID:nM/PpEMV(1) AAS
lispが最適
awkは不適
902(2): 2018/12/24(月)01:01 ID:ivcUrO89(1/3) AAS
外部リンク:ideone.com
どうにかして動的に配列を構成できないか調べてみたが
やりかたが分からん
>>892の質問してるのが書いた方法で
一旦多次元配列を読む込むようにはしてみた
質問してるのが欲しいといってる要素の数は
結局入力の行数と同じになる
903(1): 2018/12/24(月)01:07 ID:ivcUrO89(2/3) AAS
外部リンク:ideone.com
switch分のcaseが1つ少なかったから追加しといた
904: 2018/12/24(月)09:11 ID:PbNokzxn(1) AAS
>>900
> きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
delete a は a[1][2] や a[3][4][5] などの子配列含む配列a全体の使用メモリをまとめて "再利用" にまわす
一部の要素を残しておきたい事情が無ければ、delete a[1][2]; delete a[3][4][5]; ... のように子配列を個別に
deleteする必要は無い
たとえば下の(2)は多次元配列bが多次元配列aの使用済みメモリを再利用するので
終了間際のメモリ使用量は(1)(2)どちらも同じになるが、(2)の delete a を消すと倍程度に増える
(1) BEGIN{for(i=1; i<=1000000; i++){a[i%10][i]=i}}
(2) BEGIN{for(i=1; i<=1000000; i++){a[i%10][i]=i} delete a; for(i=1; i<=1000000; i++){b[i%10][i]=i}}
メモリ再利用の仕組みはThe GAWK Manualには書いていないけどAharon Robbinsが↓で回答している
外部リンク:groups.google.com
905: 2018/12/24(月)15:58 ID:ivcUrO89(3/3) AAS
なるほど
ありがとう
きっと再利用されるから
気にせず放置でいいのか
906(1): 2018/12/24(月)17:27 ID:8PLVwc4u(1) AAS
>>902 886です。ありがとうございます。動的とはこんな感じでしょうか?
一度作って、削除するという変な仕様ですが。
BEGIN {
a[1] = "foo";
a[2][1] = "bar";
a[2][2] = "baz";
a[3] = "qux";
a[4][1][1] = "quux";
a[4][2] = "corge";
for (i = 1; i < 5; i++) {
meta_ar_init(b, i);
clone(b[i], a);
}
}
function meta_ar_init(ar, init_num) {
ar[init_num][1] = "";
delete ar[init_num][1];
}
function clone(lhs, rhs, i) {
for (i in rhs) {
if (isarray(rhs[i])) {
lhs[i][1] = "";
delete lhs[i][1];
clone(lhs[i], rhs[i]);
} else
lhs[i] = rhs[i];
}
}
907: 2018/12/27(木)20:01 ID:pQqvXPza(1) AAS
よく分からんが
例えばそれで>>902の入力データなんかを読み込めたりするのか
>>903のswitchだと事前に何次元かわかってないと読み込めない
何次元になるか不明な入力データの場合
どうやれば格納できるかよくわからんんかった
908: 2018/12/27(木)22:46 ID:X7jxTwwp(1) AAS
>>906の「一度作って、削除する」というのは
外部リンク[html]:www.gnu.org
ここの一番下のsplitがエラー吐く例の回避策で、配列の要素を最初から配列扱いすることはできないから
予め次階層にダミー要素をぶら下げておき、本命を格納し終えたらダミーは消すって意味かな
自分で書いたらこんなんなったけど、いちおう何次元でも格納できそう
外部リンク:ideone.com
909: 2019/01/01(火)00:00 ID:7rl7mk2H(1) AAS
2019年もawkのお世話になります
910(1): 2019/02/05(火)18:58 ID:9Z2hbdGL(1) AAS
60くらいの教授が40年くらい前にAWKでアセンブラ作ったとか言ってたんだけど
当時に既にあったということと当時から小規模なコンパイラなら作れるくらい高性能だったことに驚いた
911: 2019/02/05(火)19:10 ID:dIIT7BCG(1) AAS
アセンブラをコンパイラとは呼ばないが
912: 2019/02/06(水)10:31 ID:+qagyc5o(1) AAS
aho
913: 2019/02/06(水)13:09 ID:j4QdsmCl(1) AAS
asort、asortiがよくわからなかったので試した結果
# a
a[5] ="a5"
a[1] ="a1"
a[3] ="a8"
# asort(a,as)
as[1] ="a1"
as[2] ="a5"
as[3] ="a8"
# asorti(a,asi)
asi[1]=1
asi[2]=3
asi[3]=5
なんだそういうことだったのかとわかった
914: 2019/02/06(水)17:39 ID:+3VpeZVh(1) AAS
>>910
思わず "assembler by awk" でググって The Amazing Awk Assembler by Henry Spencer を
ダウンロードしちゃったじゃないか。
915: 2019/02/23(土)17:41 ID:Y0E0nwid(1) AAS
awkでファイルがあるかどうかの判別は、どのようにしたらよいのでしょうか?
具体的にはBEGINの中で
getline a < "/dev/stdin";
fn = a".txt"
と任意のファイル名を作った後、そのファイルがあるかどうかを確認したいんです。
もしファイルがすでにあったら処理は終了、無ければ以後の処理をそのファイルにリダイレクトする、という感じです。
916(1): 2019/02/24(日)00:16 ID:Cwr1i6xY(1) AAS
if(getline<fn!=-1)exit
とか?
917: 2019/02/24(日)11:45 ID:FuDjIOWV(1) AAS
>>916
できました!ありがとうございます!!
918: 2019/03/21(木)08:10 ID:pGDO/F2C(1/2) AAS
答えが出ないなんで?
#!/usr/bin/awk -f
BEGIN{
print game(10, 24);
}
function game(coin,depth, i,j){
if(memo[coin,depth]){
return memo[coin,depth];
}
if(coin == 0){
return 0;
}
if(depth == 0){
return 1;
}
win = game(coin + 1, depth - 1);
lose = game(coin - 1, depth - 1);
memo[coin,depth] = win + lose;
}
919(1): 2019/03/21(木)09:51 ID:WMaCNtBE(1) AAS
最後の memo[coin,depth] = win + lose はそのまま関数の戻り値として
return しなければならないが、それを忘れている。
さらに、正しい答えが返らない原因が 2 点。
関数定義の引数名間違い: i,j → win,lose。
if(depth == 0) と if(coin == 0) の判定を行う順序が逆。
920: 2019/03/21(木)14:19 ID:pGDO/F2C(2/2) AAS
>>919
ありがとうございます。
そっか。returnがいるんですね。
perlだと最後はreturn省略可能だけどawkは省略不可みたい。
あと、引数名も間違っていました。
正しい答え出ました!
921(1): 2019/03/21(木)21:25 ID:ZeSQsBE1(1) AAS
それぐらいの処理は、Ruby で作れ!
922: 2019/03/21(木)23:54 ID:7AyLRSvD(1) AAS
オーク英雄物語 〜忖度列伝〜
外部リンク:ncode.syosetu.com ◎
Rock54: Caution(BBR-MD5:0be20a4887bc3d3353f527d3636c44e3)
923: 2019/04/01(月)17:01 ID:nwflCE8J(1) AAS
>>921
awkの方がいいときもある
installしなくていい
タスクマネージャでみているとrubyよりメモリを食わない時もある
融通の利く配列が超便利
通信、Hash、sortなど使いまくる時はrubyのほうがいいけど
924: 2019/04/01(月)17:12 ID:Tc5+6fel(1) AAS
いや、Perlだ。
理由
俺が慣れてるから。
925: 2019/04/01(月)22:48 ID:0AqZLgzF(1) AAS
Perlはまぁ慣れ以外に使う意味はあまり見出せない。
926(1): 2019/04/02(火)04:44 ID:3dIjgbOm(1) AAS
漏れは、Windows 10・WSL・Ubuntu 16.04 だけど、
sudo apt install ruby だけで、Ruby 2.3 が入った
2.4 以降の新しい書き方さえしなければ、動く
Perl, Python は、最初から入っているけど
927: 2019/04/02(火)10:00 ID:USFH8Mum(1) AAS
>>926
死ね
928: 2019/04/02(火)10:29 ID:egwP5Lwa(1) AAS
Perl脳だとdieなどと言いたがるんかね。
929: 2019/04/02(火)12:24 ID:exqjvsIl(1) AAS
Perl die好き
930: 2019/04/02(火)12:34 ID:m0agfZtU(1) AAS
w
931: 2019/04/17(水)15:16 ID:bLXqfCqA(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はいわゆるスクリプティング言語の一種。変数や関数、制御文など基本的な構文を備え、
テキストファイルを効率的に処理できるのが特徴です。
GNU AWK 5.0の新機能としては、printfの%aおよび%Aの書式がPOSIX標準に準拠したこと、
正規表現のルーチンが、長年にわたってメンテナンスされてきたGLIBCからGNULIBに
置き換わったことなど。
また、識別子に非英語文字を使うためのドキュメント化されていなかったオプションなどは
削除され、ソースコードはC99環境が想定されるようになっています。
そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
932(1): 2019/04/17(水)17:19 ID:fsOEjVgH(1) AAS
sedとawkで簡単にできることを
他の方法でやってるアホを見ると優越感に浸れるよな
933: 2019/04/17(水)21:27 ID:Cw3S472M(1) AAS
5.0.0じゃなくて4.3.0でいいじゃんって更新内容だな・・・
934: 2019/04/17(水)23:57 ID:t5VcExa0(1) AAS
今時っぽく定期的にメジャーバージョンアップしていく作戦?
そろそろAWKCARD印刷してみようかな…
935: 2019/04/18(木)00:37 ID:y8/6ebia(1) AAS
>>932
簡単な変換なのにWindowsとかでいきなりExcelでやろうとしちゃう人を見るとそこまでせんでも良いじゃないかとは思ってしまうな。
まあ日頃Windowsで事務処理的な事している人からすればそれ以上最良で分かりやすい環境はないんだろうけどな。
なんでもかんでもそれでやろうとして余計に分かりづらく複雑になってうまく行かずにハマっているのを見ると哀れに感じる。
936(1): 2019/06/01(土)01:13 ID:QInzSHhj(1/2) AAS
こういう記法ができることを知らず、気づくのに数年かかった
正規表現比較の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}
(半角だと書き込みエラーになるので全角に変換)
937: 2019/06/01(土)01:15 ID:QInzSHhj(2/2) AAS
>>936
あれ変換おかしい
{} → ()
938: 2019/06/01(土)05:25 ID:cEFw76xP(1) AAS
ふふふ知ってた。
939: 2019/06/05(水)00:27 ID:/Z5C9xDG(1) AAS
The AWK Programming Language (の邦訳本) から入ったので知ってはいるけど、
エスケープ文字を考慮してコードを書くのが面倒なので極力避けてるな。
文字列が正規表現へ「型変換」されるときの振舞いについて、本には一応書いてある。
940: 2019/06/19(水)04:52 ID:tVNS+22r(1) AAS
【出資】松本卓朗 人工知能詐欺【注意】
2chスレ:rikei
941(1): 2019/06/30(日)05:07 ID:1ALBmyOB(1/2) AAS
AWKが巨大なテキストファイルを処理できないみたいな話を知ってる方いらしゃいますか。
大体1.4GiBくらいのファイルをAWKで編集しようとすると「ファイルの空きがない」みたいなエラーが出るので。
942(2): 2019/06/30(日)12:11 ID:QU2Ls1X6(1) AAS
UNIXというかまともなPIPE実装されてるOSならそんなことはないが
WINDOWSとかいうアホなOSだと出るだろうね
943(1): 2019/06/30(日)12:19 ID:pDzbN/vc(1) AAS
「ファイルの空きがない」っていうメッセージは "No space left on device" の事?
944: 2019/06/30(日)15:28 ID:o/HVRPYj(1) AAS
>>942
コマンドラインでリダイレクト使ってればそうかも知れんが
スクリプト内で出力先を指定してたらわからんぞー
945: 2019/06/30(日)21:02 ID:1ALBmyOB(2/2) AAS
>>942
なるほど。
946: 2019/06/30(日)21:56 ID:HbSturrb(1) AAS
>>941
改行コードの違いにより全体が長い一行と認識されてしまい・・・なんて事はないか?
あ、でも、ファイルの空きがないってのは出力先の空き容量が足りないってことかな?
947(1): 2019/07/01(月)01:34 ID:2smzn43h(1/2) AAS
>>943
そうです。
でもファイルシステムとしては全く余裕がある状態なんです。
948(1): 2019/07/01(月)02:30 ID:jjSXuURg(1) AAS
なんだろうね。作業用ファイルが作られるパーティションの空きが足りないとかかな?
949: 2019/07/01(月)02:35 ID:KfVaWYci(1) AAS
64bit版か32bit版かで違わないか
1.4GBは入力で出力も同じなのかはるかに小さいのか
出力が速すぎることはないのか、ゆっくり出力するようにしたらどうか
950: 947 2019/07/01(月)07:19 ID:2smzn43h(2/2) AAS
>>948
すいません。これが原因でした。
AWKは全く悪くありませんでした。ご迷惑&&スレ汚し、大変失礼しました……。
951: 2019/07/01(月)07:38 ID:O1pDJEnN(1) AAS
Ruby でも、File.read なら、ファイルの内容を、メモリ内にすべて読み込んでしまうから、
500MB 以上なら、読み込めずにエラーになるだろう
File.foreach なら、メモリ内に、1行ずつ読み込んでは捨てるから、大きいファイルでも大丈夫
まあ、RubyVM 起動時に、そのアプリが使うメモリのサイズを、指定できると思うけど。
JavaVM には、そういうオプションがある
952(1): 2019/07/02(火)21:28 ID:Stz7guhB(1/2) AAS
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..
953: 952 2019/07/02(火)21:47 ID:Stz7guhB(2/2) AAS
お騒がせしました。自己解決しました。
外部リンク:stackoverflow.com
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
954: 2019/07/03(水)06:22 ID:IYY9eTuR(1) AAS
gawkなら時間関数群あるんじゃ。
955: 2019/07/04(木)01:05 ID:vxwYTSOB(1) AAS
ここいいね。Web上でawkの実行とその結果が見れるサービス。
外部リンク[php]:www.tutorialspoint.com
956: 2019/07/05(金)19:29 ID:p9vBdDGq(1) AA×

957: 2019/08/05(月)11:42 ID:N86fIT/u(1/3) AAS
Windows10 のコマンドプロンプトで awk を使いたいです。
vector で検索するといろいろでてくるのですが、
これがお勧めっていうのありますでしょうか。
日本語も扱えるのがいいです。
よろしくお願いします。
958: 2019/08/05(月)11:44 ID:MNXFY7cg(1/7) AAS
Windows 10なら、標準機能のWSL(+Ubuntu)をインストールするのが一般的
vectorとかもうあんなのいらない
959: 2019/08/05(月)12:04 ID:N86fIT/u(2/3) AAS
WSLって使ったことなかったんですけど、
ググってみたらもう Win で Linux が標準で使えるんですね。
これなら cygwin とかも、もういらないのかな。
情報どうもです。
960: 2019/08/05(月)12:06 ID:MNXFY7cg(2/7) AAS
cygwinもいらない。遅いし互換性低いし
961: 2019/08/05(月)12:06 ID:NOA3rn3w(1) AAS
WSL って pro だけ?
home だったら付いてない?
msys とか入れれば解決するけど
962(2): 2019/08/05(月)12:18 ID:N86fIT/u(3/3) AAS
マイクロソフトもビルゲイツがいなくなって
多少は良い事もするようになったかな。
963(1): 2019/08/05(月)12:33 ID:LhsszH09(1/2) AAS
>>962
いや、まだ足りない。何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
まあ仕方のないことではあるがな。
964: 2019/08/05(月)12:42 ID:MNXFY7cg(3/7) AAS
WSLはhomeでも使える。WSL2も使えるようにすると発表があった。
965: 2019/08/05(月)12:59 ID:MNXFY7cg(4/7) AAS
>>963
> 何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
それがLinuxでも動くようになり、Windowsのライセンス料もかからなくなってきてるから
最近のMSの評判が抜群に上がってるんだろ
966: 2019/08/05(月)15:30 ID:VYzH3PNA(1) AAS
>>962
windows育ちでないunix系を知っている今のCEOに変わってから変化し始めた
ダメな旧MS文化からunix系やandroid系に転換をはかっている
ダメだったのは前CEOバルマー
967: 2019/08/05(月)17:45 ID:QFC6lZK5(1) AAS
いっそのこと UNIX のカーネルに Windows のシェルを
被せてもらいたいですね。
Mac はもうそうなってるし。
968: 2019/08/05(月)17:59 ID:MNXFY7cg(5/7) AAS
そのわりに、MacってUNIXを全然活かせてないよな?
forkは遅いし、仮想マシン使ったほうがMacよりも速いし。
969(1): 2019/08/05(月)18:09 ID:MNXFY7cg(6/7) AAS
まあ、AppleはUNIXを真似ることしかできなかったわけで
UNIXと双璧をなす独自OSを作り上げたMSと同じことをしろというのも酷な話だが、
UNIX/Linuxを取り込むなら、WSLと同じ仕組みで十分な気がする。
あとAppleが運が悪かったのは、Linuxがここまで普及すると予測できなかったことかな
BSD系を採用しちゃったので、Linuxとコマンド体系が微妙に変わってしまった。
標準でUnixコマンドが搭載されてるにも関わらず、サードパーティのHomebrewを使って
Linux互換(GNU版)のコマンドに置き換える人も多いし。
970(1): 2019/08/05(月)20:09 ID:oBMYP5f0(1) AAS
> UNIXと双璧をなす独自OSを作り上げたMS
ゴミをでっち上げ、OSとかよく解らない池沼層に売っただけ。
971: 2019/08/05(月)20:51 ID:LhsszH09(2/2) AAS
MSはOSというよりはUIを作った感じだな。
972: 2019/08/05(月)21:05 ID:MNXFY7cg(7/7) AAS
>>970
嫉妬すんなよw 事実は受け入れようぜw
973: 2019/08/05(月)21:12 ID:O6CFE/yb(1) AAS
マクドナルドのハンバーガー並に普及した
974: 2019/08/05(月)22:10 ID:o5dspg/Y(1) AAS
macOSの前身のNEXTSTEPは技術的には絶賛されてた
macOSは中身ほぼNEXTSTEPで見た目をモダンにしただけだ
975: 2019/08/06(火)14:52 ID:SvihPrAV(1) AAS
マルチユーザーマルチスレッドωωω
976(1): 2019/08/06(火)17:42 ID:9obbnMlM(1) AAS
> macOSの前身のNEXTSTEPは技術的には絶賛されてた
でもUNIXの割にforkが遅いんだよな
cygwin使ってるのか?って思っちゃうぐらい。
977: 2019/08/06(火)20:48 ID:ePqW8mte(1) AAS
スレッドも遅いの?
978: 2019/08/07(水)00:04 ID:NEAc+E18(1) AAS
>>976
forkが速くて称賛されてた訳じゃないからな…
ちなみにforkの速度は今時そんなに重要じゃないぞ
もしそれで困ってるならスレッドを使うとか事前にプロセスを起動して置くなりすればいい
979: 2019/08/07(水)00:33 ID:WK8NJ3/V(1) AAS
でもそうするとWSLで十分じゃね?という話になる
980: 2019/08/07(水)01:24 ID:NRK0ob+d(1) AAS
新手のスレ埋め立てかw
981(1): 2019/08/07(水)04:38 ID:/UJIAec/(1) AAS
>>969
そんなこと気にする人ってどれくらい居るんだろう
CPUですら68、PowerPC、x86と変えてきて
OSは独自、BSDと来たもんだ
多くの人は中身を気にせず使ってるのに
自分は元マカーだけど今は1台も持ってない
でもファッションでMacBookいいカナと思うよ
仕事はITのエンジニアで商用UNIX使ってるけど
コマンドなんてどうでもいいわ
好きなところにログインすれば言いだけなんだから
982(2): 2019/08/08(木)01:24 ID:X/CTiqlR(1) AAS
| awk -F: '! /BINARY/ {print $1}'\
正規表現無しの簡潔な部分はperl -lane より短くて最高
983(1): 2020/08/02(日)11:03 ID:mglN/rTr(1/2) AAS
>>982
短かいのが正義!とは思わないけど、
perlと違ってSUSで定義されてるのがありがたいね。
984(1): 2020/08/02(日)17:25 ID:IlYSPDQE(1) AAS
ファッションでというと、写真撮影しているオシャレな感じのスタジオの受け付けにマックがあったのだが画面を見るとWindowsだったというのを見たことがあるな。
エミュでWindows動かしてそこで業務用のソフト動かして受け付け業務に使っているということだが、客から見るとディスプレイの裏側が主に見えるのでAppleマークが見えると。
985(1): 2020/08/02(日)19:24 ID:mglN/rTr(2/2) AAS
>>984
誤爆?
986: 2020/08/03(月)02:35 ID:iGTWfWuc(1/2) AAS
>>985
>>981
987: 2020/08/03(月)09:51 ID:3aFKjSal(1) AAS
Aho
988: 2020/08/03(月)10:16 ID:ZKD4yCvc(1) AAS
AWmae no Kachan debeso
989: 2020/08/03(月)20:08 ID:iGTWfWuc(2/2) AAS
awk の a は本当に Aho の略(人名)
990: 2020/08/10(月)14:00 ID:l5zwQhnu(1/2) AAS
>>982 >>983
何事もないように書いてるけど実は1年空いてる
991: 2020/08/10(月)14:01 ID:l5zwQhnu(2/2) AAS
即レスも大概だが亀レスも大概やな!
992: 2020/08/10(月)22:16 ID:DZgybkpe(1) AAS
AWesome Kame res
993: 2020/08/13(木)10:26 ID:uwSNr/lm(1) AAS
真のawkerは多くを語らない。
awkを語らない…ナンチャッテ!
994: 2020/08/13(木)16:09 ID:GqR68DDy(1) AAS
は?
995: 2020/08/14(金)13:41 ID:H4TUvcZb(1) AA×

996: 2020/08/14(金)15:50 ID:XKPWE/tl(1) AAS
外部リンク[html]:www.manabu-oshieru.com
997: 2020/09/14(月)11:09 ID:c+iGp9gS(1) AAS
bashで小数点の比較をする方法にbcを使うという意見が多かった
けどawkの方がわかりやすいと思う
condition()
{
awk 'BEGIN { exit ! ('"$*"') }'
}
x=5.6; y=42.1
if condition "$x < $y"; then
echo true
else
echo false
fi
998: 2020/09/14(月)11:15 ID:S/jhW9z+(1) AAS
bcはインストールされてないことが時々あるんで使わないね
まあその点はawkの方がマシだろう
999: 2020/09/14(月)12:03 ID:gMM3Z1ji(1) AAS
梅
1000: 2020/09/14(月)12:08 ID:H3Bos02D(1) AAS
Aho Weinberger Kernighan
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 4951日 12時間 12分 57秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net
▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.301s*