腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語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/
探検
awkについて語るスレ $2
レス数が950を超えています。1000を超えると書き込みができなくなります。
2007/02/23(金) 23:55:42
896デフォルトの名無しさん
2018/12/23(日) 02:59:04.54ID:quoNoaXg 886です。
親ノード毎?に保存する方法がまだわかりませんが、
明日以降考えます。
みなさん、ご協力ありがとうございました。
親ノード毎?に保存する方法がまだわかりませんが、
明日以降考えます。
みなさん、ご協力ありがとうございました。
897デフォルトの名無しさん
2018/12/23(日) 08:49:07.73ID:S8HMq/6c gawk4でとにかく速いのが良いならcで拡張関数作るのが良いかと(反則?)
flatten_array_typed関数(4.1.4はflatten_array関数)でawk_flat_array_t構造体のメンバ変数countに要素数が入りますので
要素がAWK_ARRAYなら再帰するように処理すれば出来上がり
APIの使い方は
extension\rwarray.cとか
https://www.gnu.org/software/gawk/manual/html_node/Flattening-Arrays.html#Flattening-Arraysを参考に
gawkだけでやる場合、もし配列の要素数が10万とか100万あるのなら、関数の引数を出来るだけ減らして
関数内からグローバル変数を直接参照したほうが速くなると思います
flatten_array_typed関数(4.1.4はflatten_array関数)でawk_flat_array_t構造体のメンバ変数countに要素数が入りますので
要素がAWK_ARRAYなら再帰するように処理すれば出来上がり
APIの使い方は
extension\rwarray.cとか
https://www.gnu.org/software/gawk/manual/html_node/Flattening-Arrays.html#Flattening-Arraysを参考に
gawkだけでやる場合、もし配列の要素数が10万とか100万あるのなら、関数の引数を出来るだけ減らして
関数内からグローバル変数を直接参照したほうが速くなると思います
898デフォルトの名無しさん
2018/12/23(日) 11:20:10.63ID:qffc/3mK もともと添え字がすべて文字列で保存する仕様というのはしってはいたが
多次元配列はaho[i,j]という形式にして工夫して使えということらしいな
awkで多次元配列なんか使ったことないから知らんかったわ
とういワケでにその形式で多次元配列をlengthでとると>>886で取得したい値になる
当然といえば当然
特定の次元の列だけのとりかたはよくわからん とれんのかコレ
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_12.html#SEC119
Using Numbers to Subscript Arrays
配列について重要なのは、配列の添え字は常に 文字列として扱われるということである。
配列の添え字に数字を使った場合、それは添え字付けに使われる前に 文字列に変換される
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_12.html#SEC121
Multi-dimensional Arrays
多次元配列とは、配列要素の指定を複数の添字の並びによって行う配列である。例え ば二次元の配列は二つの添字を必要とする。
一般的な(awkも含めた大多数の 言語では) 二次元配列の要素に対する参照は grid[x,y]このよ うに行う。 (gridは配列の名前)
セパレータには組み込み変数SUBSEPに格納 されている値が使われる。
多次元配列はaho[i,j]という形式にして工夫して使えということらしいな
awkで多次元配列なんか使ったことないから知らんかったわ
とういワケでにその形式で多次元配列をlengthでとると>>886で取得したい値になる
当然といえば当然
特定の次元の列だけのとりかたはよくわからん とれんのかコレ
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_12.html#SEC119
Using Numbers to Subscript Arrays
配列について重要なのは、配列の添え字は常に 文字列として扱われるということである。
配列の添え字に数字を使った場合、それは添え字付けに使われる前に 文字列に変換される
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_12.html#SEC121
Multi-dimensional Arrays
多次元配列とは、配列要素の指定を複数の添字の並びによって行う配列である。例え ば二次元の配列は二つの添字を必要とする。
一般的な(awkも含めた大多数の 言語では) 二次元配列の要素に対する参照は grid[x,y]このよ うに行う。 (gridは配列の名前)
セパレータには組み込み変数SUBSEPに格納 されている値が使われる。
899デフォルトの名無しさん
2018/12/23(日) 11:43:46.94ID:7N3pX2Wi900デフォルトの名無しさん
2018/12/23(日) 22:29:12.74ID:qffc/3mK まず入力から多次元配列を読込む処理でも作ってみるか
できるのかがよく分からん
コレがすんなりできないとコレ自体が使えるシロモノにならなそうだしな
テストデータは作ってみた
https://ideone.com/Sir0IE
awkのこの多次元配列についてほかのとこで書いてあるの読んでみると
色々と面倒なことがおきるはのは分かった
特に問題がおきそうなのは一度配列やスカラーで要素を追加すると、
その配列やスカラーを変えて上書きする場合明示的にそれを削除しないと上書きして使えない
きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
cのメモリリークと同じことが起きると推定される
いまいちこの多次元配列に使い道があるのかどうかが分からない
できるのかがよく分からん
コレがすんなりできないとコレ自体が使えるシロモノにならなそうだしな
テストデータは作ってみた
https://ideone.com/Sir0IE
awkのこの多次元配列についてほかのとこで書いてあるの読んでみると
色々と面倒なことがおきるはのは分かった
特に問題がおきそうなのは一度配列やスカラーで要素を追加すると、
その配列やスカラーを変えて上書きする場合明示的にそれを削除しないと上書きして使えない
きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
cのメモリリークと同じことが起きると推定される
いまいちこの多次元配列に使い道があるのかどうかが分からない
901デフォルトの名無しさん
2018/12/23(日) 23:32:19.00ID:nM/PpEMV lispが最適
awkは不適
awkは不適
902デフォルトの名無しさん
2018/12/24(月) 01:01:19.83ID:ivcUrO89 https://ideone.com/PFBwQU
どうにかして動的に配列を構成できないか調べてみたが
やりかたが分からん
>>892の質問してるのが書いた方法で
一旦多次元配列を読む込むようにはしてみた
質問してるのが欲しいといってる要素の数は
結局入力の行数と同じになる
どうにかして動的に配列を構成できないか調べてみたが
やりかたが分からん
>>892の質問してるのが書いた方法で
一旦多次元配列を読む込むようにはしてみた
質問してるのが欲しいといってる要素の数は
結局入力の行数と同じになる
903デフォルトの名無しさん
2018/12/24(月) 01:07:37.50ID:ivcUrO89904デフォルトの名無しさん
2018/12/24(月) 09:11:50.63ID:PbNokzxn >>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が↓で回答している
https://groups.google.com/forum/#!topic/comp.lang.awk/CKwoes0_63U
> きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
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が↓で回答している
https://groups.google.com/forum/#!topic/comp.lang.awk/CKwoes0_63U
905デフォルトの名無しさん
2018/12/24(月) 15:58:51.02ID:ivcUrO89 なるほど
ありがとう
きっと再利用されるから
気にせず放置でいいのか
ありがとう
きっと再利用されるから
気にせず放置でいいのか
906デフォルトの名無しさん
2018/12/24(月) 17:27:46.25ID:8PLVwc4u >>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];
}
}
一度作って、削除するという変な仕様ですが。
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:48.39ID:pQqvXPza908デフォルトの名無しさん
2018/12/27(木) 22:46:53.38ID:X7jxTwwp >>906の「一度作って、削除する」というのは
https://www.gnu.org/software/gawk/manual/gawk.html#Arrays-of-Arrays
ここの一番下のsplitがエラー吐く例の回避策で、配列の要素を最初から配列扱いすることはできないから
予め次階層にダミー要素をぶら下げておき、本命を格納し終えたらダミーは消すって意味かな
自分で書いたらこんなんなったけど、いちおう何次元でも格納できそう
https://ideone.com/83ykKF#stdin
https://www.gnu.org/software/gawk/manual/gawk.html#Arrays-of-Arrays
ここの一番下のsplitがエラー吐く例の回避策で、配列の要素を最初から配列扱いすることはできないから
予め次階層にダミー要素をぶら下げておき、本命を格納し終えたらダミーは消すって意味かな
自分で書いたらこんなんなったけど、いちおう何次元でも格納できそう
https://ideone.com/83ykKF#stdin
909デフォルトの名無しさん
2019/01/01(火) 00:00:01.96ID:7rl7mk2H 2019年もawkのお世話になります
910デフォルトの名無しさん
2019/02/05(火) 18:58:36.44ID:9Z2hbdGL 60くらいの教授が40年くらい前にAWKでアセンブラ作ったとか言ってたんだけど
当時に既にあったということと当時から小規模なコンパイラなら作れるくらい高性能だったことに驚いた
当時に既にあったということと当時から小規模なコンパイラなら作れるくらい高性能だったことに驚いた
911デフォルトの名無しさん
2019/02/05(火) 19:10:49.73ID:dIIT7BCG アセンブラをコンパイラとは呼ばないが
912デフォルトの名無しさん
2019/02/06(水) 10:31:17.59ID:+qagyc5o aho
913デフォルトの名無しさん
2019/02/06(水) 13:09:33.86ID:j4QdsmCl 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
なんだそういうことだったのかとわかった
# 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:23.37ID:+3VpeZVh915デフォルトの名無しさん
2019/02/23(土) 17:41:13.06ID:Y0E0nwid awkでファイルがあるかどうかの判別は、どのようにしたらよいのでしょうか?
具体的にはBEGINの中で
getline a < "/dev/stdin";
fn = a".txt"
と任意のファイル名を作った後、そのファイルがあるかどうかを確認したいんです。
もしファイルがすでにあったら処理は終了、無ければ以後の処理をそのファイルにリダイレクトする、という感じです。
具体的にはBEGINの中で
getline a < "/dev/stdin";
fn = a".txt"
と任意のファイル名を作った後、そのファイルがあるかどうかを確認したいんです。
もしファイルがすでにあったら処理は終了、無ければ以後の処理をそのファイルにリダイレクトする、という感じです。
916デフォルトの名無しさん
2019/02/24(日) 00:16:02.91ID:Cwr1i6xY if(getline<fn!=-1)exit
とか?
とか?
917デフォルトの名無しさん
2019/02/24(日) 11:45:53.93ID:FuDjIOWV >>916
できました!ありがとうございます!!
できました!ありがとうございます!!
918デフォルトの名無しさん
2019/03/21(木) 08:10:09.34ID:pGDO/F2C 答えが出ないなんで?
#!/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;
}
#!/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デフォルトの名無しさん
2019/03/21(木) 09:51:18.96ID:WMaCNtBE 最後の memo[coin,depth] = win + lose はそのまま関数の戻り値として
return しなければならないが、それを忘れている。
さらに、正しい答えが返らない原因が 2 点。
関数定義の引数名間違い: i,j → win,lose。
if(depth == 0) と if(coin == 0) の判定を行う順序が逆。
return しなければならないが、それを忘れている。
さらに、正しい答えが返らない原因が 2 点。
関数定義の引数名間違い: i,j → win,lose。
if(depth == 0) と if(coin == 0) の判定を行う順序が逆。
920デフォルトの名無しさん
2019/03/21(木) 14:19:16.55ID:pGDO/F2C921デフォルトの名無しさん
2019/03/21(木) 21:25:33.68ID:ZeSQsBE1 それぐらいの処理は、Ruby で作れ!
922デフォルトの名無しさん
2019/03/21(木) 23:54:47.78ID:7AyLRSvD オーク英雄物語 〜忖度列伝〜
https://ncode.syosetu.com/n8418ff/1/ 👀
Rock54: Caution(BBR-MD5:0be20a4887bc3d3353f527d3636c44e3)
https://ncode.syosetu.com/n8418ff/1/ 👀
Rock54: Caution(BBR-MD5:0be20a4887bc3d3353f527d3636c44e3)
923デフォルトの名無しさん
2019/04/01(月) 17:01:28.78ID:nwflCE8J >>921
awkの方がいいときもある
installしなくていい
タスクマネージャでみているとrubyよりメモリを食わない時もある
融通の利く配列が超便利
通信、Hash、sortなど使いまくる時はrubyのほうがいいけど
awkの方がいいときもある
installしなくていい
タスクマネージャでみているとrubyよりメモリを食わない時もある
融通の利く配列が超便利
通信、Hash、sortなど使いまくる時はrubyのほうがいいけど
924デフォルトの名無しさん
2019/04/01(月) 17:12:08.21ID:Tc5+6fel いや、Perlだ。
理由
俺が慣れてるから。
理由
俺が慣れてるから。
925デフォルトの名無しさん
2019/04/01(月) 22:48:54.89ID:0AqZLgzF Perlはまぁ慣れ以外に使う意味はあまり見出せない。
926デフォルトの名無しさん
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 は、最初から入っているけど
sudo apt install ruby だけで、Ruby 2.3 が入った
2.4 以降の新しい書き方さえしなければ、動く
Perl, Python は、最初から入っているけど
927デフォルトの名無しさん
2019/04/02(火) 10:00:50.55ID:USFH8Mum >>926
死ね
死ね
928デフォルトの名無しさん
2019/04/02(火) 10:29:57.68ID:egwP5Lwa Perl脳だとdieなどと言いたがるんかね。
929デフォルトの名無しさん
2019/04/02(火) 12:24:56.71ID:exqjvsIl Perl die好き
930デフォルトの名無しさん
2019/04/02(火) 12:34:58.56ID:m0agfZtU w
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環境が想定されるようになっています。
そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
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で簡単にできることを
他の方法でやってるアホを見ると優越感に浸れるよな
他の方法でやってるアホを見ると優越感に浸れるよな
933デフォルトの名無しさん
2019/04/17(水) 21:27:37.50ID:Cw3S472M 5.0.0じゃなくて4.3.0でいいじゃんって更新内容だな・・・
934デフォルトの名無しさん
2019/04/17(水) 23:57:17.65ID:t5VcExa0 今時っぽく定期的にメジャーバージョンアップしていく作戦?
そろそろAWKCARD印刷してみようかな…
そろそろAWKCARD印刷してみようかな…
935デフォルトの名無しさん
2019/04/18(木) 00:37:48.90ID:y8/6ebia >>932
簡単な変換なのにWindowsとかでいきなりExcelでやろうとしちゃう人を見るとそこまでせんでも良いじゃないかとは思ってしまうな。
まあ日頃Windowsで事務処理的な事している人からすればそれ以上最良で分かりやすい環境はないんだろうけどな。
なんでもかんでもそれでやろうとして余計に分かりづらく複雑になってうまく行かずにハマっているのを見ると哀れに感じる。
簡単な変換なのにWindowsとかでいきなりExcelでやろうとしちゃう人を見るとそこまでせんでも良いじゃないかとは思ってしまうな。
まあ日頃Windowsで事務処理的な事している人からすればそれ以上最良で分かりやすい環境はないんだろうけどな。
なんでもかんでもそれでやろうとして余計に分かりづらく複雑になってうまく行かずにハマっているのを見ると哀れに感じる。
936デフォルトの名無しさん
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}
(半角だと書き込みエラーになるので全角に変換)
正規表現比較の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:01.39ID:QInzSHhj938デフォルトの名無しさん
2019/06/01(土) 05:25:56.80ID:cEFw76xP ふふふ知ってた。
939デフォルトの名無しさん
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/
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
941デフォルトの名無しさん
2019/06/30(日) 05:07:43.82ID:1ALBmyOB AWKが巨大なテキストファイルを処理できないみたいな話を知ってる方いらしゃいますか。
大体1.4GiBくらいのファイルをAWKで編集しようとすると「ファイルの空きがない」みたいなエラーが出るので。
大体1.4GiBくらいのファイルをAWKで編集しようとすると「ファイルの空きがない」みたいなエラーが出るので。
942デフォルトの名無しさん
2019/06/30(日) 12:11:04.21ID:QU2Ls1X6 UNIXというかまともなPIPE実装されてるOSならそんなことはないが
WINDOWSとかいうアホなOSだと出るだろうね
WINDOWSとかいうアホなOSだと出るだろうね
943デフォルトの名無しさん
2019/06/30(日) 12:19:57.44ID:pDzbN/vc 「ファイルの空きがない」っていうメッセージは "No space left on device" の事?
944デフォルトの名無しさん
2019/06/30(日) 15:28:11.21ID:o/HVRPYj945デフォルトの名無しさん
2019/06/30(日) 21:02:48.49ID:1ALBmyOB >>942
なるほど。
なるほど。
946デフォルトの名無しさん
2019/06/30(日) 21:56:09.12ID:HbSturrb947デフォルトの名無しさん
2019/07/01(月) 01:34:15.60ID:2smzn43h948デフォルトの名無しさん
2019/07/01(月) 02:30:15.69ID:jjSXuURg なんだろうね。作業用ファイルが作られるパーティションの空きが足りないとかかな?
949デフォルトの名無しさん
2019/07/01(月) 02:35:44.08ID:KfVaWYci 64bit版か32bit版かで違わないか
1.4GBは入力で出力も同じなのかはるかに小さいのか
出力が速すぎることはないのか、ゆっくり出力するようにしたらどうか
1.4GBは入力で出力も同じなのかはるかに小さいのか
出力が速すぎることはないのか、ゆっくり出力するようにしたらどうか
950947
2019/07/01(月) 07:19:02.17ID:2smzn43h951デフォルトの名無しさん
2019/07/01(月) 07:38:04.28ID:O1pDJEnN Ruby でも、File.read なら、ファイルの内容を、メモリ内にすべて読み込んでしまうから、
500MB 以上なら、読み込めずにエラーになるだろう
File.foreach なら、メモリ内に、1行ずつ読み込んでは捨てるから、大きいファイルでも大丈夫
まあ、RubyVM 起動時に、そのアプリが使うメモリのサイズを、指定できると思うけど。
JavaVM には、そういうオプションがある
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..
頂けないでしょうか
■ コード
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
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
954デフォルトの名無しさん
2019/07/03(水) 06:22:07.32ID:IYY9eTuR gawkなら時間関数群あるんじゃ。
955デフォルトの名無しさん
2019/07/04(木) 01:05:04.08ID:vxwYTSOB ここいいね。Web上でawkの実行とその結果が見れるサービス。
https://www.tutorialspoint.com/execute_awk_online.php
https://www.tutorialspoint.com/execute_awk_online.php
956デフォルトの名無しさん
2019/07/05(金) 19:29:13.12ID:p9vBdDGq fi
、Jj
Й
/⌒ヽ
l_ 0..0
}{ l冊
-=-v=-
}{ 彡ミノ{
}{ 非 }{
匁OTO)匁
}{ }{
}{ }{
及 及
、Jj
Й
/⌒ヽ
l_ 0..0
}{ l冊
-=-v=-
}{ 彡ミノ{
}{ 非 }{
匁OTO)匁
}{ }{
}{ }{
及 及
957デフォルトの名無しさん
2019/08/05(月) 11:42:29.38ID:N86fIT/u Windows10 のコマンドプロンプトで awk を使いたいです。
vector で検索するといろいろでてくるのですが、
これがお勧めっていうのありますでしょうか。
日本語も扱えるのがいいです。
よろしくお願いします。
vector で検索するといろいろでてくるのですが、
これがお勧めっていうのありますでしょうか。
日本語も扱えるのがいいです。
よろしくお願いします。
958デフォルトの名無しさん
2019/08/05(月) 11:44:36.72ID:MNXFY7cg Windows 10なら、標準機能のWSL(+Ubuntu)をインストールするのが一般的
vectorとかもうあんなのいらない
vectorとかもうあんなのいらない
959デフォルトの名無しさん
2019/08/05(月) 12:04:58.85ID:N86fIT/u WSLって使ったことなかったんですけど、
ググってみたらもう Win で Linux が標準で使えるんですね。
これなら cygwin とかも、もういらないのかな。
情報どうもです。
ググってみたらもう Win で Linux が標準で使えるんですね。
これなら cygwin とかも、もういらないのかな。
情報どうもです。
960デフォルトの名無しさん
2019/08/05(月) 12:06:14.91ID:MNXFY7cg cygwinもいらない。遅いし互換性低いし
961デフォルトの名無しさん
2019/08/05(月) 12:06:57.54ID:NOA3rn3w WSL って pro だけ?
home だったら付いてない?
msys とか入れれば解決するけど
home だったら付いてない?
msys とか入れれば解決するけど
962デフォルトの名無しさん
2019/08/05(月) 12:18:30.48ID:N86fIT/u マイクロソフトもビルゲイツがいなくなって
多少は良い事もするようになったかな。
多少は良い事もするようになったかな。
963デフォルトの名無しさん
2019/08/05(月) 12:33:33.70ID:LhsszH09964デフォルトの名無しさん
2019/08/05(月) 12:42:57.45ID:MNXFY7cg WSLはhomeでも使える。WSL2も使えるようにすると発表があった。
965デフォルトの名無しさん
2019/08/05(月) 12:59:49.23ID:MNXFY7cg >>963
> 何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
それがLinuxでも動くようになり、Windowsのライセンス料もかからなくなってきてるから
最近のMSの評判が抜群に上がってるんだろ
> 何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
それがLinuxでも動くようになり、Windowsのライセンス料もかからなくなってきてるから
最近のMSの評判が抜群に上がってるんだろ
966デフォルトの名無しさん
2019/08/05(月) 15:30:49.20ID:VYzH3PNA967デフォルトの名無しさん
2019/08/05(月) 17:45:26.88ID:QFC6lZK5 いっそのこと UNIX のカーネルに Windows のシェルを
被せてもらいたいですね。
Mac はもうそうなってるし。
被せてもらいたいですね。
Mac はもうそうなってるし。
968デフォルトの名無しさん
2019/08/05(月) 17:59:46.21ID:MNXFY7cg そのわりに、MacってUNIXを全然活かせてないよな?
forkは遅いし、仮想マシン使ったほうがMacよりも速いし。
forkは遅いし、仮想マシン使ったほうがMacよりも速いし。
969デフォルトの名無しさん
2019/08/05(月) 18:09:58.23ID:MNXFY7cg まあ、AppleはUNIXを真似ることしかできなかったわけで
UNIXと双璧をなす独自OSを作り上げたMSと同じことをしろというのも酷な話だが、
UNIX/Linuxを取り込むなら、WSLと同じ仕組みで十分な気がする。
あとAppleが運が悪かったのは、Linuxがここまで普及すると予測できなかったことかな
BSD系を採用しちゃったので、Linuxとコマンド体系が微妙に変わってしまった。
標準でUnixコマンドが搭載されてるにも関わらず、サードパーティのHomebrewを使って
Linux互換(GNU版)のコマンドに置き換える人も多いし。
UNIXと双璧をなす独自OSを作り上げたMSと同じことをしろというのも酷な話だが、
UNIX/Linuxを取り込むなら、WSLと同じ仕組みで十分な気がする。
あとAppleが運が悪かったのは、Linuxがここまで普及すると予測できなかったことかな
BSD系を採用しちゃったので、Linuxとコマンド体系が微妙に変わってしまった。
標準でUnixコマンドが搭載されてるにも関わらず、サードパーティのHomebrewを使って
Linux互換(GNU版)のコマンドに置き換える人も多いし。
970デフォルトの名無しさん
2019/08/05(月) 20:09:15.04ID:oBMYP5f0 > UNIXと双璧をなす独自OSを作り上げたMS
ゴミをでっち上げ、OSとかよく解らない池沼層に売っただけ。
ゴミをでっち上げ、OSとかよく解らない池沼層に売っただけ。
971デフォルトの名無しさん
2019/08/05(月) 20:51:07.86ID:LhsszH09 MSはOSというよりはUIを作った感じだな。
972デフォルトの名無しさん
2019/08/05(月) 21:05:19.12ID:MNXFY7cg >>970
嫉妬すんなよw 事実は受け入れようぜw
嫉妬すんなよw 事実は受け入れようぜw
973デフォルトの名無しさん
2019/08/05(月) 21:12:10.12ID:O6CFE/yb マクドナルドのハンバーガー並に普及した
974デフォルトの名無しさん
2019/08/05(月) 22:10:04.48ID:o5dspg/Y macOSの前身のNEXTSTEPは技術的には絶賛されてた
macOSは中身ほぼNEXTSTEPで見た目をモダンにしただけだ
macOSは中身ほぼNEXTSTEPで見た目をモダンにしただけだ
975デフォルトの名無しさん
2019/08/06(火) 14:52:58.06ID:SvihPrAV マルチユーザーマルチスレッドωωω
976デフォルトの名無しさん
2019/08/06(火) 17:42:44.33ID:9obbnMlM > macOSの前身のNEXTSTEPは技術的には絶賛されてた
でもUNIXの割にforkが遅いんだよな
cygwin使ってるのか?って思っちゃうぐらい。
でもUNIXの割にforkが遅いんだよな
cygwin使ってるのか?って思っちゃうぐらい。
977デフォルトの名無しさん
2019/08/06(火) 20:48:47.73ID:ePqW8mte スレッドも遅いの?
978デフォルトの名無しさん
2019/08/07(水) 00:04:17.07ID:NEAc+E18979デフォルトの名無しさん
2019/08/07(水) 00:33:23.13ID:WK8NJ3/V でもそうするとWSLで十分じゃね?という話になる
980デフォルトの名無しさん
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使ってるけど
コマンドなんてどうでもいいわ
好きなところにログインすれば言いだけなんだから
そんなこと気にする人ってどれくらい居るんだろう
CPUですら68、PowerPC、x86と変えてきて
OSは独自、BSDと来たもんだ
多くの人は中身を気にせず使ってるのに
自分は元マカーだけど今は1台も持ってない
でもファッションでMacBookいいカナと思うよ
仕事はITのエンジニアで商用UNIX使ってるけど
コマンドなんてどうでもいいわ
好きなところにログインすれば言いだけなんだから
982デフォルトの名無しさん
2019/08/08(木) 01:24:30.39ID:X/CTiqlR | awk -F: '! /BINARY/ {print $1}'\
正規表現無しの簡潔な部分はperl -lane より短くて最高
正規表現無しの簡潔な部分はperl -lane より短くて最高
983デフォルトの名無しさん
2020/08/02(日) 11:03:40.06ID:mglN/rTr984デフォルトの名無しさん
2020/08/02(日) 17:25:58.24ID:IlYSPDQE ファッションでというと、写真撮影しているオシャレな感じのスタジオの受け付けにマックがあったのだが画面を見るとWindowsだったというのを見たことがあるな。
エミュでWindows動かしてそこで業務用のソフト動かして受け付け業務に使っているということだが、客から見るとディスプレイの裏側が主に見えるのでAppleマークが見えると。
エミュでWindows動かしてそこで業務用のソフト動かして受け付け業務に使っているということだが、客から見るとディスプレイの裏側が主に見えるのでAppleマークが見えると。
985デフォルトの名無しさん
2020/08/02(日) 19:24:52.35ID:mglN/rTr >>984
誤爆?
誤爆?
987デフォルトの名無しさん
2020/08/03(月) 09:51:55.82ID:3aFKjSal Aho
988デフォルトの名無しさん
2020/08/03(月) 10:16:40.93ID:ZKD4yCvc AWmae no Kachan debeso
989デフォルトの名無しさん
2020/08/03(月) 20:08:52.49ID:iGTWfWuc awk の a は本当に Aho の略(人名)
990デフォルトの名無しさん
2020/08/10(月) 14:00:21.38ID:l5zwQhnu991デフォルトの名無しさん
2020/08/10(月) 14:01:04.64ID:l5zwQhnu 即レスも大概だが亀レスも大概やな!
992デフォルトの名無しさん
2020/08/10(月) 22:16:10.09ID:DZgybkpe AWesome Kame res
993デフォルトの名無しさん
2020/08/13(木) 10:26:07.54ID:uwSNr/lm 真のawkerは多くを語らない。
awkを語らない…ナンチャッテ!
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'
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 【文春】《記事予告》国民的女優&人気俳優 不倫スクープ第2弾 ★4 [Ailuropoda melanoleuca★]
- 米価高騰が日本人のコメ離れに拍車かける 茶わん1杯のごはんは4枚切り食パン1枚より高額の時代 ★3 [首都圏の虎★]
- イギリス、反移民を掲げる右派ポピュリスト政党が1600議席中677議席の大躍進―英地方議会選 ★2 [お断り★]
- 【巨人】岡本和真 初回の交錯プレーで負傷交代 左腕が逆方向にグニャリ…数分間もん絶 [ひかり★]
- 【川崎・20歳女性死体遺棄】「あさひを返せ!」県警の説明に親族、友人ら90人が署に集まり猛抗議「嘘ばかり、謝れば済むことなのに」★15 [ぐれ★]
- 【新型コロナ】今もコロナ後遺症と闘う19歳 移動、食事、排泄、入浴など手を借りなければ… 周囲の無理解、支援受けられぬ例も ★2 [ぐれ★]
- ゴールデンウィークの思い出を語るお🏡
- 【訃報】黒い三連星、ニャアンに殺される 原作キャラを踏み台にするのやめろよ…ガンダムへの冒涜だろ… [579392623]
- __下院議員、ボンディ司法長官とパテルFBI長官がエプスタインのファイルをおそらく破棄と発言 [827565401]
- __英国とインド、英国で臨時任務に就くインド人労働者の国民保険料の支払いを最長3年間免除する貿易協定 [827565401]
- ものに例えるなら俺はパーツクリーナーです
- ダイヤモンドってどうやって磨くの?