18/12/23 08:49:07.73 S8HMq/6c.net
gawk4でとにかく速いのが良いならcで拡張関数作るのが良いかと(反則?)
flatten_array_typed関数(4.1.4はflatten_array関数)でawk_flat_array_t構造体のメンバ変数countに要素数が入りますので
要素がAWK_ARRAYなら再帰するように処理すれば出来上がり
APIの使い方は
extension\rwarray.cとか
URLリンク(www.gnu.org)を参考に
gawkだけでやる場合、もし配列の要素数が10万とか100万あるのなら、関数の引数を出来るだけ減らして
関数内からグローバル変数を直接参照したほうが速くなると思います
911:デフォルトの名無しさん
18/12/23 11:20:10.63 qffc/3mK.net
もともと添え字がすべて文字列で保存する仕様というのはしってはいたが
多次元配列はaho[i,j]という形式にして工夫して使えということらしいな
awkで多次元配列なんか使ったことないから知らんかったわ
とういワケでにその形式で多次元配列をlengthでとると>>888で取得したい値になる
当然といえば当然
特定の次元の列だけのとりかたはよくわからん とれんのかコレ
URLリンク(www.kt.rim.or.jp)
Using Numbers to Subscript Arrays
配列について重要なのは、配列の添え字は常に 文字列として扱われるということである。
配列の添え字に数字を使った場合、それは添え字付けに使われる前に 文字列に変換される
URLリンク(www.kt.rim.or.jp)
Multi-dimensional Arrays
多次元配列とは、配列要素の指定を複数の添字の並びによって行う配列である。例え ば二次元の配列は二つの添字を必要とする。
一般的な(awkも含めた大多数の 言語では) 二次元配列の要素に対する参照は grid[x,y]このよ うに行う。 (gridは配列の名前)
セパレータには組み込み変数SUBSEPに格納 されている値が使われる。
912:デフォルトの名無しさん
18/12/23 11:43:46.94 7N3pX2Wi.net
>>900
それを踏まえて>>888で
> gawk4
とわざわざことわっているんじゃないの?
913:デフォルトの名無しさん
18/12/23 22:29:12.74 qffc/3mK.net
まず入力から多次元配列を読込む処理でも作ってみるか
できるのかがよく分からん
コレがすんなりできないとコレ自体が使えるシロモノにならなそうだしな
テストデータは作ってみた
URLリンク(ideone.com)
awkのこの多次元配列についてほかのとこで書いてあるの読んでみると
色々と面倒なことがおきるはのは分かった
特に問題がおきそうなのは一度配列やスカラーで要素を追加すると、
その配列やスカラーを変えて上書きする場合明示的にそれを削除しないと上書きして使えない
きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
cのメモリリークと同じことが起きると推定される
いまいちこの多次元配列に使い道があるのかどうかが分からない
914:デフォルトの名無しさん
18/12/23 23:32:19.00 nM/PpEMV.net
lispが最適
awkは不適
915:デフォルトの名無しさん
18/12/24 01:01:19.83 ivcUrO89.net
URLリンク(ideone.com)
どうにかして動的に配列を構成できないか調べてみたが
やりかたが分からん
>>894の質問してるのが書いた方法で
一旦多次元配列を読む込むようにはしてみた
質問してるのが欲しいといってる要素の数は
結局入力の行数と同じになる
916:デフォルトの名無しさん
18/12/24 01:07:37.50 ivcUrO89.net
URLリンク(ideone.com)
switch分のcaseが1つ少なかったから追加しといた
917:デフォルトの名無しさん
18/12/24 09:11:50.63 PbNokzxn.net
>>902
> きっとなノードを削除するときはその要素゙から辿って一番深いとこから再帰的に削除しないと残骸が残る
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が↓で回答している
URLリンク(groups.google.com)
918:デフォルトの名無しさん
18/12/24 15:58:51.02 ivcUrO89.net
なるほど
ありがとう
きっと再利用されるから
気にせず放置でいいのか
919:デフォルトの名無しさん
18/12/24 17:27:46.25 8PLVwc4u.net
>>904 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];
}
}
920:デフォルトの名無しさん
18/12/27 20:01:48.39 pQqvXPza.net
よく分からんが
例えばそれで>>904の入力データなんかを読み込めたりするのか
>>905のswitchだと事前に何次元かわかってないと読み込めない
何次元になるか不明な入力データの場合
どうやれば格納できるかよくわからんんかった
921:デフォルトの名無しさん
18/12/27 22:46:53.38 X7jxTwwp.net
>>908の「一度作って、削除する」というのは
URLリンク(www.gnu.org)
ここの一番下のsplitがエラー吐く例の回避策で、配列の要素を最初から配列扱いすることはできないから
予め次階層にダミー要素をぶら下げておき、本命を格納し終えたらダミーは消すって意味かな
自分で書いたらこんなんなったけど、いちおう何次元でも格納できそう
URLリンク(ideone.com)
922:デフォルトの名無しさん
18/12/30 03:28:21.38 5ft+KBa+B
すごいけど配列の値が書いてないので
BEGIN {
array_entry(a, "1-2-3", 48)
array_entry(a, "1-2-4-6", 667)
array_entry(a, "3-1", 0)
array_entry(a, "4", 6)
array_entry(a, "5-1-2-3-4-5", -128)
process_array(a, "a", "do_print", 0)
}
function array_entry(a, val, ele , step, b, n) {
n = split(val, b, /-/)
if (n == 1) { a[val + 0] = ele; return }
if (step == n - 2) { a[b[step + 1]][b[n]] = ele; return }
a[b[step + 1]]["dummy"];
if (step + 1 < n) {
array_entry(a[b[step + 1]], val, ele, step + 1)
delete a[b[step + 1]]["dummy"]
}
}つづく
923:デフォルトの名無しさん
18/12/30 03:29:15.30 5ft+KBa+B
function do_print(name, element) {
printf("%s = %s\n", name, element);
}
function process_array(arr, name, process, do_arrays, i, new_name) {
for (i in arr) {
new_name = (name "[" i "]");
if (isarray(arr[i])) {
if (do_arrays)
@process(new_name, arr[i]);
process_array(arr[i], new_name, process, do_arrays);
} else
@process(new_name, arr[i]);
}
}
これでいけそう?
924:デフォルトの名無しさん
18/12/31 02:46:41.48 20SukTdNU
ちゃんと書いてみました。
URLリンク(ideone.com)
925:デフォルトの名無しさん
19/01/01 00:00:01.96 7rl7mk2H.net
2019年もawkのお世話になります
926:デフォルトの名無しさん
19/01/02 18:12:37.70 0+aicLseW
すげー
927:デフォルトの名無しさん
19/01/05 08:05:13.61 1ixBisDID
どなたか教えてください
Windows10-32bit,MinGW(msys無し),gawk4.2.1 for win32 bin/src(ezwinports),
Shift_JISの環境で builtin.c を書き換えてビルドしました。
書き換えた内容はprintf/sprintfのマルチバイト文字列整形関連です。
ビルド後、期待通りに動きますが、実行ファイルサイズが4.8MBもあります。
上記のソースディレクトリでcmdを起動して
mingw32-make mingw32
とタイプしました。
出来上がった gawk.exe のファイルサイズは正常なのでしょうか?
また、上記環境ではできませんが configure は必要ですか?
よろしくお願いいたします。
928:デフォルトの名無しさん
19/02/05 18:58:36.44 9Z2hbdGL.net
60くらいの教授が40年くらい前にAWKでアセンブラ作ったとか言ってたんだけど
当時に既にあったということと当時から小規模なコンパイラなら作れるくらい高性能だったことに驚いた
929:デフォルトの名無しさん
19/02/05 19:10:49.73 dIIT7BCG.net
アセンブラをコンパイラとは呼ばないが
930:デフォルトの名無しさん
19/02/06 10:31:17.59 +qagyc5o.net
aho
931:デフォルトの名無しさん
19/02/06 13:09:33.86 j4QdsmCl.net
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
なんだそういうことだったのかとわかった
932:デフォルトの名無しさん
19/02/06 17:39:23.37 +3VpeZVh.net
>>917
思わず "assembler by awk" でググって The Amazing Awk Assembler by Henry Spencer を
ダウンロードしちゃったじゃないか。
933:デフォルトの名無しさん
19/02/23 17:41:13.06 Y0E0nwid.net
awkでファイルがあるかどうかの判別は、どのようにしたらよいのでしょうか?
具体的にはBEGINの中で
getline a < "/dev/stdin";
fn = a".txt"
と任意のファイル名を作った後、そのファイルがあるかどうかを確認したいんです。
もしファイルがすでにあったら処理は終了、無ければ以後の処理をそのファイルにリダイレクトする、という感じです。
934:デフォルトの名無しさん
19/02/24 00:16:02.91 Cwr1i6xY.net
if(getline<fn!=-1)exit
とか?
935:デフォルトの名無しさん
19/02/24 11:45:53.93 FuDjIOWV.net
>>923
できました!ありがとうございます!!
936:デフォルトの名無しさん
19/03/21 08:10:09.34 pGDO/F2C.net
答えが出ないなんで?
#!/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;
}
937:デフォルトの名無しさん
19/03/21 09:51:18.96 WMaCNtBE.net
最後の memo[coin,depth] = win + lose はそのまま関数の戻り値として
return しなければならないが、それを忘れている。
さらに、正しい答えが返らない原因が 2 点。
関数定義の引数名間違い: i,j → win,lose。
if(depth == 0) と if(coin == 0) の判定を行う順序が逆。
938:デフォルトの名無しさん
19/03/21 14:19:16.55 pGDO/F2C.net
>>926
ありがとうございます。
そっか。returnがいるんですね。
perlだと最後はreturn省略可能だけどawkは省略不可みたい。
あと、引数名も間違っていました。
正しい答え出ました!
939:デフォルトの名無しさん
19/03/21 21:25:33.68 ZeSQsBE1.net
それぐらいの処理は、Ruby で作れ!
940:デフォルトの名無しさん
19/03/21 23:54:47.78 7AyLRSvD.net
オーク英雄物語 ~忖度列伝~
URLリンク(ncode.syosetu.com) 👀
Rock54: Caution(BBR-MD5:0be20a4887bc3d3353f527d3636c44e3)
941:デフォルトの名無しさん
19/04/01 17:01:28.78 nwflCE8J.net
>>928
awkの方がいいときもある
installしなくていい
タスクマネージャでみているとrubyよりメモリを食わない時もある
融通の利く配列が超便利
通信、Hash、sortなど使いまくる時はrubyのほうがいいけど
942:デフォルトの名無しさん
19/04/01 17:12:08.21 Tc5+6fel.net
いや、Perlだ。
理由
俺が慣れてるから。
943:デフォルトの名無しさん
19/04/01 22:48:54.89 0AqZLgzF.net
Perlはまぁ慣れ以外に使う意味はあまり見出せない。
944:デフォルトの名無しさん
19/04/02 04:44:16.86 3dIjgbOm.net
漏れは、Windows 10・WSL・Ubuntu 16.04 だけど、
sudo apt install ruby だけで、Ruby 2.3 が入った
2.4 以降の新しい書き方さえしなければ、動く
Perl, Python は、最初から入っているけど
945:デフォルトの名無しさん
19/04/02 10:00:50.55 USFH8Mum.net
>>933
死ね
946:デフォルトの名無しさん
19/04/02 10:29:57.68 egwP5Lwa.net
Perl脳だとdieなどと言いたがるんかね。
947:デフォルトの名無しさん
19/04/02 12:24:56.71 exqjvsIl.net
Perl die好き
948:デフォルトの名無しさん
19/04/02 12:34:58.56 m0agfZtU.net
w
949:デフォルトの名無しさん
19/04/17 15:16:55.69 bLXqfCqA.net
GNU AWK 5.0がリリース。8年ぶりのメジャーバージョンアップ。正規表現ライブラリが
GLIBCからGNULIBへ移行、名前空間が実装 2019年4月17日
URLリンク(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環境が想定されるようになっています。
そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
950:デフォルトの名無しさん
19/04/17 17:19:50.38 fsOEjVgH.net
sedとawkで簡単にできることを
他の方法でやってるアホを見ると優越感に浸れるよな
951:デフォルトの名無しさん
19/04/17 21:27:37.50 Cw3S472M.net
5.0.0じゃなくて4.3.0でいいじゃんって更新内容だな・・・
952:デフォルトの名無しさん
19/04/17 23:57:17.65 t5VcExa0.net
今時っぽく定期的にメジャーバージョンアップしていく作戦?
そろそろAWKCARD印刷してみようかな…
953:デフォルトの名無しさん
19/04/18 00:37:48.90 y8/6ebia.net
>>939
簡単な変換なのにWindowsとかでいきなりExcelでやろうとしちゃう人を見るとそこまでせんでも良いじゃないかとは思ってしまうな。
まあ日頃Windowsで事務処理的な事している人からすればそれ以上最良で分かりやすい環境はないんだろうけどな。
なんでもかんでもそれでやろうとして余計に分かりづらく複雑になってうまく行かずにハマっているのを見ると哀れに感じる。
954:デフォルトの名無しさん
19/06/01 01:13:44.70 QInzSHhj.net
こういう記法ができることを知らず、気づくのに数年かかった
正規表現比較の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}
(半角だと書き込みエラーになるので全角に変換)
955:デフォルトの名無しさん
19/06/01 01:15:01.39 QInzSHhj.net
>>943
あれ変換おかしい
{} → ()
956:デフォルトの名無しさん
19/06/01 05:25:56.80 cEFw76xP.net
ふふふ知ってた。
957:デフォルトの名無しさん
19/06/05 00:27:37.11 /Z5C9xDG.net
The AWK Programming Language (の邦訳本) から入ったので知ってはいるけど、
エスケープ文字を考慮してコードを書くのが面倒なので極力避けてるな。
文字列が正規表現へ「型変換」されるときの振舞いについて、本には一応書いてある。
958:デフォルトの名無しさん
19/06/08 18:14:03.76 QbmZ5eQJn
user's guide ~Regular Expressions
・Using Dynamic Regexps
結構前からある。
内部的には文字列定数を正規表現として使うために
2回目のスキャンが必要らしい。
959:デフォルトの名無しさん
19/06/11 21:06:31.25 +TF2B1JOC
どうせ廃れるぜ。この言語はよ。あばよ
960:デフォルトの名無しさん
19/06/12 18:34:22.16 yp7o1TZla
AWK / GAWKにて
UTF-8の文字列表示長さって、どうやって求めるのですか?
たとえば、 str="abcdeあいうえお"
半角を 1 とすると str の表示長さは 15
また、キャラクタ数と表示長さを1つスクリプトで
併用したいときはどうすればよいのでしょうか?
分かる方、教えてください。よろしくお願いいたします。
961:デフォルトの名無しさん
19/06/12 18:49:25.69 KWGtdn6vZ
私はこうしてます。
URLリンク(mfi.sub.jp)
962:デフォルトの名無しさん
19/06/12 19:07:09.50 kkOQizBgZ
>>950
ありがとございます。
助かります。
963:デフォルトの名無しさん
19/06/12 22:16:17.50 wOmIo+3+t
ごめんこっちの方が良かった。
UTF-8なので使い方は違うけど
ASCII/128個と半角カナ/63個以外は、長さ2で計算するので
表示長さだと思ってください。
URLリンク(ideone.com)
964:952
19/06/12 22:41:15.99 CfhwF05wL
忘れてました。
ideoneのstdin 文字化けしてるわけじゃないから。
ランダムに文字打ち出してるだけです。
965:デフォルトの名無しさん
19/06/13 13:49:33.22 FlIZ7NjL1
こちらもどうぞ
bsubstr(string, start, length)
指定位置(表示長さ単位)から指定表示長さの文字列を切り出す関数
文字化けする箇所はスペース充填
Shift_JISでもUTF-8でも可
URLリンク(ideone.com)
966:デフォルトの名無しさん
19/06/13 18:18:48.64 +trsIn9cI
よろしければこちらもどうぞ。
sformat(fw, prec, string)
sprintf("%*.*s", fw, prec, string)の替わりに
さっき作ったからバグがあるかもしれません。
URLリンク(ideone.com)
967:デフォルトの名無しさん
19/06/14 02:38:34.74 8YLuNO2w7
眠い、帰ってきて見直したらダメダメでした。
sformat()改良しました。
見てくれてるかな
URLリンク(ideone.com)
968:デフォルトの名無しさん
19/06/14 14:13:28.99 rib6nibVS
bsubstr()も見直した。
やっぱりダメダメだった。
URLリンク(ideone.com)
969:デフォルトの名無しさん
19/06/19 04:52:26.36 tVNS+22r.net
【出資】松本卓朗 人工知能詐欺【注意】
スレリンク(rikei板)
970:デフォルトの名無しさん
19/06/30 05:07:43.82 1ALBmyOB.net
AWKが巨大なテキストファイルを処理できないみたいな話を知ってる方いらしゃいますか。
大体1.4GiBくらいのファイルをAWKで編集しようとすると「ファイルの空きがない」みたいなエラーが出るので。
971:デフォルトの名無しさん
19/06/30 12:11:04.21 QU2Ls1X6.net
UNIXというかまともなPIPE実装されてるOSならそんなことはないが
WINDOWSとかいうアホなOSだと出るだろうね
972:デフォルトの名無しさん
19/06/30 12:19:57.44 pDzbN/vc.net
「ファイルの空きがない」っていうメッセージは "No space left on device" の事?
973:デフォルトの名無しさん
19/06/30 15:28:11.21 o/HVRPYj.net
>>960
コマンドラインでリダイレクト使ってればそうかも知れんが
スクリプト内で出力先を指定してたらわからんぞー
974:デフォルトの名無しさん
19/06/30 21:02:48.49 1ALBmyOB.net
>>960
なるほど。
975:デフォルトの名無しさん
19/06/30 21:56:09.12 HbSturrb.net
>>959
改行コードの違いにより全体が長い一行と認識されてしまい・・・なんて事はないか?
あ、でも、ファイルの空きがないってのは出力先の空き容量が足りないってことかな?
976:デフォルトの名無しさん
19/07/01 01:34:15.60 2smzn43h.net
>>961
そうです。
でもファイルシステムとしては全く余裕がある状態なんです。
977:デフォルトの名無しさん
19/07/01 02:30:15.69 jjSXuURg.net
なんだろうね。作業用ファイルが作られるパーティションの空きが足りないとかかな?
978:デフォルトの名無しさん
19/07/01 02:35:44.08 KfVaWYci.net
64bit版か32bit版かで違わないか
1.4GBは入力で出力も同じなのかはるかに小さいのか
出力が速すぎることはないのか、ゆっくり出力するようにしたらどうか
979:947
19/07/01 07:19:02.17 2smzn43h.net
>>966
すいません。これが原因でした。
AWKは全く悪くありませんでした。ご迷惑&&スレ汚し、大変失礼しました……。
980:デフォルトの名無しさん
19/07/01 07:38:04.28 O1pDJEnN.net
Ruby で
981:も、File.read なら、ファイルの内容を、メモリ内にすべて読み込んでしまうから、 500MB 以上なら、読み込めずにエラーになるだろう File.foreach なら、メモリ内に、1行ずつ読み込んでは捨てるから、大きいファイルでも大丈夫 まあ、RubyVM 起動時に、そのアプリが使うメモリのサイズを、指定できると思うけど。 JavaVM には、そういうオプションがある
982:デフォルトの名無しさん
19/07/02 21:28:41.07 Stz7guhB.net
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..
983:952
19/07/02 21:47:38.82 Stz7guhB.net
お騒がせしました。自己解決しました。
URLリンク(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
984:デフォルトの名無しさん
19/07/03 06:22:07.32 IYY9eTuR.net
gawkなら時間関数群あるんじゃ。
985:デフォルトの名無しさん
19/07/04 01:05:04.08 vxwYTSOB.net
ここいいね。Web上でawkの実行とその結果が見れるサービス。
URLリンク(www.tutorialspoint.com)
986:デフォルトの名無しさん
19/07/05 19:29:13.12 p9vBdDGq.net
fi
、Jj
Й
/⌒ヽ
l_ 0..0
}{ l冊
-=-v=-
}{ 彡ミノ{
}{ 非 }{
匁OTO)匁
}{ }{
}{ }{
及 及
987:デフォルトの名無しさん
19/08/05 11:42:29.38 N86fIT/u.net
Windows10 のコマンドプロンプトで awk を使いたいです。
vector で検索するといろいろでてくるのですが、
これがお勧めっていうのありますでしょうか。
日本語も扱えるのがいいです。
よろしくお願いします。
988:デフォルトの名無しさん
19/08/05 11:44:36.72 MNXFY7cg.net
Windows 10なら、標準機能のWSL(+Ubuntu)をインストールするのが一般的
vectorとかもうあんなのいらない
989:デフォルトの名無しさん
19/08/05 12:04:58.85 N86fIT/u.net
WSLって使ったことなかったんですけど、
ググってみたらもう Win で Linux が標準で使えるんですね。
これなら cygwin とかも、もういらないのかな。
情報どうもです。
990:デフォルトの名無しさん
19/08/05 12:06:14.91 MNXFY7cg.net
cygwinもいらない。遅いし互換性低いし
991:デフォルトの名無しさん
19/08/05 12:06:57.54 NOA3rn3w.net
WSL って pro だけ?
home だったら付いてない?
msys とか入れれば解決するけど
992:デフォルトの名無しさん
19/08/05 12:18:30.48 N86fIT/u.net
マイクロソフトもビルゲイツがいなくなって
多少は良い事もするようになったかな。
993:デフォルトの名無しさん
19/08/05 12:33:33.70 LhsszH09.net
>>980
いや、まだ足りない。何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
まあ仕方のないことではあるがな。
994:デフォルトの名無しさん
19/08/05 12:42:57.45 MNXFY7cg.net
WSLはhomeでも使える。WSL2も使えるようにすると発表があった。
995:デフォルトの名無しさん
19/08/05 12:59:49.23 MNXFY7cg.net
>>981
> 何でもかんでもWindowsの上で動くようにしているだけだしね。すると何を動かすにしてもWindowsのライセンス料が掛かる。
それがLinuxでも動くようになり、Windowsのライセンス料もかからなくなってきてるから
最近のMSの評判が抜群に上がってるんだろ
996:デフォルトの名無しさん
19/08/05 15:30:49.20 VYzH3PNA.net
>>980
windows育ちでないunix系を知っている今のCEOに変わってから変化し始めた
ダメな旧MS文化からunix系やandroid系に転換をはかっている
ダメだったのは前CEOバルマー
997:デフォルトの名無しさん
19/08/05 17:45:26.88 QFC6lZK5.net
いっそのこと UNIX のカーネルに Windows のシェルを
被せてもらいたいですね。
Mac はもうそうなってるし。
998:デフォルトの名無しさん
19/08/05 17:59:46.21 MNXFY7cg.net
そのわりに、MacってUNIXを全然活かせてないよな?
forkは遅いし、仮想マシン使ったほうがMacよりも速いし。
999:デフォルトの名無しさん
19/08/05 18:09:58.23 MNXFY7cg.net
まあ、AppleはUNIXを真似ることしかできなかったわけで
UNIXと双璧をなす独自OSを作り上げたMSと同じことをしろというのも酷な話だが、
UNIX/Linuxを取り込むなら、WSLと同じ仕組みで十分な気がする。
あとAppleが運が悪かったのは、Linuxがここまで普及すると予測できなかったことかな
BSD系を採用しちゃったので、Linuxとコマンド体系が微妙に変わってしまった。
標準でUnixコマンドが搭載されてるにも関わらず、サードパーティのHomebrewを使って
Linux互換(GNU版)のコマンドに置き換える人も多いし。
1000:デフォルトの名無しさん
19/08/05 20:09:15.04 oBMYP5f0.net
> UNIXと双璧をなす独自OSを作り上げたMS
ゴミをでっち上げ、OSとかよく解らない池沼層に売っただけ。
1001:デフォルトの名無しさん
19/08/05 20:51:07.86 LhsszH09.net
MSはOSというよりはUIを作った感じだな。
1002:デフォルトの名無しさん
19/08/05 21:05:19.12 MNXFY7cg.net
>>988
嫉妬すんなよw 事実は受け入れようぜw
1003:デフォルトの名無しさん
19/08/05 21:12:10.12 O6CFE/yb.net
マクドナルドのハンバーガー並に普及した
1004:デフォルトの名無しさん
19/08/05 22:10:04.48 o5dspg/Y.net
macOSの前身のNEXTSTEPは技術的には絶賛されてた
macOSは中身ほぼNEXTSTEPで見た目をモダンにしただけだ
1005:デフォルトの名無しさん
19/08/06 14:52:58.06 SvihPrAV.net
マルチユーザーマルチスレッドωωω
1006:デフォルトの名無しさん
19/08/06 17:42:44.33 9obbnMlM.net
> macOSの前身のNEXTSTEPは技術的には絶賛されてた
でもUNIXの割にforkが遅いんだよな
cygwin使ってるのか?って思っちゃうぐらい。
1007:デフォルトの名無しさん
19/08/06 20:48:47.73 ePqW8mte.net
スレッドも遅いの?
1008:デフォルトの名無しさん
19/08/07 00:04:17.07 NEAc+E18.net
>>994
forkが速くて称賛されてた訳じゃないからな…
ちなみにforkの速度は今時そんなに重要じゃないぞ
もしそれで困ってるならスレッドを使うとか事前にプロセスを起動して置くなりすればいい
1009:デフォルトの名無しさん
19/08/07 00:33:23.13 WK8NJ3/V.net
でもそうするとWSLで十分じゃね?という話になる
1010:デフォルトの名無しさん
19/08/07 01:24:29.79 NRK0ob+d.net
新手のスレ埋め立てかw
1011:デフォルトの名無しさん
19/08/07 04:38:27.64 /UJIAec/.net
>>987
そんなこと気にする人ってどれくらい居るんだろう
CPUですら68、PowerPC、x86と変えてきて
OSは独自、BSDと来たもんだ
多くの人は中身を気にせず使ってるのに
自分は元マカーだけど今は1台も持ってない
でもファッションでMacBookいいカナと思うよ
仕事はITのエンジニアで商用UNIX使ってるけど
コマンドなんてどうでもいいわ
好きなところにログインすれば言いだけなんだから
1012:デフォルトの名無しさん
19/08/08 01:24:30.39 X/CTiqlR.net
| awk -F: '! /BINARY/ {print $1}'\
正規表現無しの簡潔な部分はperl -lane より短くて最高
1013:デフォルトの名無しさん
20/08/02 11:03:40.06 mglN/rTr.net
>>1000
短かいのが正義!とは思わないけど、
perlと違ってSUSで定義されてるのがありがたいね。
1014:デフォルトの名無しさん
20/08/02 17:25:58.24 IlYSPDQE.net
ファッションでというと、写真撮影しているオシャレな感じのスタジオの受け付けにマックがあったのだが画面を見るとWindowsだったというのを見たことがあるな。
エミュでWindows動かしてそこで業務用のソフト動かして受け付け業務に使っているということだが、客から見るとディスプレイの裏側が主に見えるのでAppleマークが見えると。
1015:デフォルトの名無しさん
20/08/02 19:24:52.35 mglN/rTr.net
>>1002
誤爆?
1016:デフォルトの名無しさん
20/08/03 02:35:57.38 iGTWfWuc.net
>>1003
>>999
1017:デフォルトの名無しさん
20/08/03 09:51:55.82 3aFKjSal.net
Aho
1018:デフォルトの名無しさん
20/08/03 10:16:40.93 ZKD4yCvc.net
AWmae no Kachan debeso
1019:デフォルトの名無しさん
20/08/03 20:08:52.49 iGTWfWuc.net
awk の a は本当に Aho の略(人名)
1020:デフォルトの名無しさん
20/08/08 20:17:17.30 02OvZPQeD
Windowsのコマンドプロンプトでgawk使ってますが、
BEGIN{
print ("三" ~ /[亜-黑]/) ? "matched" : "unmatched"
print ("浦" ~ /[亜-黑]/) ? "matched" : "unmatched"
}
漢字かどうかの判断で、浦はマッチするけど、三がマッチしません。。(井や上もマッチしない)
SHIFT JISです。Klabaster 4.1.4でもezwinports 5.1.0でも同じ結果でした。どなたかヒントもらえると嬉しいです。
1021:デフォルトの名無しさん
20/08/10 14:00:21.38 l5zwQhnu.net
>>1000 >>1001
何事もないように書いてるけど実は1年空いてる
1022:デフォルトの名無しさん
20/08/10 14:01:04.64 l5zwQhnu.net
即レスも大概だが亀レスも大概やな!
1023:デフォルトの名無しさん
20/08/10 22:16:10.09 DZgybkpe.net
AWesome Kame res
1024:デフォルトの名無しさん
20/08/13 10:26:07.54 uwSNr/lm.net
真のawkerは多くを語らない。
awkを語らない…ナンチャッテ!
1025:デフォルトの名無しさん
20/08/13 16:09:43.86 GqR68DDy.net
は?
1026:デフォルトの名無しさん
20/08/14 13:41:25.37 H4TUvcZb.net
【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
1027:デフォルトの名無しさん
20/08/14 15:50:04.19 XKPWE/tl.net
URLリンク(www.manabu-oshieru.com)
1028:デフォルトの名無しさん
20/09/14 11:09:07.94 c+iGp9gS.net
bashで小数点の比較をする方法にbcを使うという意見が多かった
けどawkの方がわかりやすいと思う
condition()
{
awk 'BEGIN { exit ! ('"$*"') }'
}
x=5.6; y=42.1
if condition "$x < $y"; then
echo true
else
echo false
fi
1029:デフォルトの名無しさん
20/09/14 11:15:45.20 S/jhW9z+.net
bcはインストールされてないことが時々あるんで使わないね
まあその点はawkの方がマシだろう
1030:デフォルトの名無しさん
20/09/14 12:03:30.66 gMM3Z1ji.net
梅
1031:デフォルトの名無しさん
20/09/14 12:08:39.52 H3Bos02D.net
Aho Weinberger Kernighan
1032:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 4951日 12時間 12分 57秒
1033:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています