awkについて語るスレ $2at TECH
awkについて語るスレ $2 - 暇つぶし2ch950:デフォルトの名無しさん
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:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch