08/07/07 20:52:18 7N4CeYxI.net
awkは言わねえ、たった一行・・・
3:login:Penguin
08/07/07 20:55:08 64cKGfca.net
オークは便利だオーク
4:login:Penguin
08/07/07 21:21:04 Bjq85S2V.net
sedファンクラブからきました。
5:login:Penguin
08/07/07 21:35:44 rSMtL5cT.net
ls -ltr | awk '{print $8}'
6:login:Penguin
08/07/07 21:50:35 XFLIMsgD.net
aho
wainberg
kernihan
7:login:Penguin
08/07/07 22:39:16 /5MnC3tB.net
awkでなんでもやるのって年がバレそうだなあ。ちょっと下の世代だとperlだろうし。
8:login:Penguin
08/07/08 00:19:21 9/fi698j.net
URLリンク(text.world.coocan.jp)
9:login:Penguin
08/07/08 01:19:20 yAMbUEpf.net
しばらくしたら,perlでなんでもやるのって年がバレそうだなあ。ちょっと下の世代だとpythonだろうし。ってなるんだろうな
10:login:Penguin
08/07/08 10:32:21 YEHCkTi1.net
下の世代はpythonよりrubyじゃないか?
自分の場合、全部シェルスクリプトだけどw
11:login:Penguin
08/07/08 12:50:38 6brAoz3h.net
perl->pythonときてawkの便利さに気付いた。
12:login:Penguin
08/07/08 16:47:52 TJw2Mlna.net
awk, perlユーザだが次はpythonとやらをいじってみるかね
13:login:Penguin
08/07/09 19:51:11 r1P6Mjit.net
awkを256倍はみなさん持ってます?ここがすべての始まりだったなあ
14:login:Penguin
08/07/09 19:52:45 +TY8Gpg6.net
オライリーのsed&awkがはじまりだったなあ・・・
んでもってx68kで遊んでいたw
15:login:Penguin
08/07/09 19:55:00 0dhBqlXX.net
俺はrubyとpython両方使ってる。
rubyはワンライナー~十数行のスクリプト。
pythonは数十行~数百行のスクリプト。
16:login:Penguin
08/07/09 20:03:27 Glf+LFW9.net
そんな昔にawkとかと出会えた人が羨ましい
17:login:Penguin
08/07/09 20:09:52 r1P6Mjit.net
awk gawk jgawk やっぱり魅力はデータなめさせた時のスピード感
18:login:Penguin
08/07/09 21:59:50 2WqtvhnN.net
適当なデータをSQLにして流すときとかに使ってる。
BEGIN/ENDのおかげでトランザクション使うのも簡単。
19:login:Penguin
08/07/09 23:40:46 ro47ZQt4.net
>>14
「プログラミング言語AWK」が絶版になると聞いてあわてて確保したが、すぐ再版された。
20:login:Penguin
08/07/20 12:21:50 j9YcHbCn.net
awk がなくなると困る・・・・・
Perlで$3 を表示しる!とかどーすんよ
awk '{print $3}'
21:login:Penguin
08/07/20 12:31:10 /rTvaqQG.net
オークについて、おおくは語らねぇ
22:login:Penguin
08/07/20 13:45:48 ysRQGfiQ.net
>>20
perl -ane 'print $F[2], "\n"'でいいんじゃね?
23:login:Penguin
08/07/20 22:40:15 3uxKU7IE.net
>>22
なんかこう、Perlってスクリプトにエレガントさを感じないんだよな。つぎはぎが多い
というか。
awkの場合、cに近いスタイルでありながらパターンマッチングとか連想配列の実装が
エレガントだからコードを見ててきれいに感じる。
24:login:Penguin
08/07/20 23:32:42 j9YcHbCn.net
>>22 マジレス ㌧㌧ ちょっとやってみる(ヲイ
25:login:Penguin
08/07/21 04:31:14 RBm9osMs.net
perl の -n は各行に対しての処理、-e はスクリプトをファイルでなくその場でワンライナー書く為のものだが
-a オプションはやっぱり awk の名に由来するのかねぇ
26:login:Penguin
08/07/21 10:22:28 m3jpUYR9.net
>>25
autosplit modeってusageに書いてあるじゃん。
27:login:Penguin
08/07/22 11:02:10 oOCbPgMu.net
>26
いや名目上はそうだけどさ。
スクリプトでauto~なんて言い出したらキリが無いワケじゃん。
ぶっちゃけ -n だって自動ループと言っちゃえばそうだし。
そこで -s や -p みたいな名前じゃなくて
わざわざ -a にしたのは、やっぱ awk の名を意識したからなのかな、と
思ったんだよ。
28:login:Penguin
08/08/17 18:47:40 AZ0h4M4q.net
ruby -ne 'puts split[2]'のほうが楽、と思ったけど
空行とかでの扱い考えると
ruby -ne 'puts split[2] || ""'
になるのか。やっぱawkが楽だな。
29:login:Penguin
08/12/03 10:54:22 QXJz0hBL.net
sedのスレとかあったので、思わず「なんでawkを使わない?」って突っ込んでしまったけど、
実はおれも長らくsedからawkへ行けなかった。田中さん(緑のSerrow)が月刊asciiに書いた
記事を読んで使えるようになったのだった。
いまではperlも使うが、やはりawkが楽だなぁ。16進→10進変換の関数作ったり、
バイナリデータ読むためのコードをCで作ったりして無理やり使ってたころが
懐かしい。
30:login:Penguin
08/12/03 23:47:03 Thw8Gp7O.net
2年くらい前からLinuxを本格的に使い始めたけど
awk(gawk)とsedには特に力を入れて勉強してる
gawkは機能が洗練されて美しいし直感的で使いやすい
リファレンスもとてもしっかりしてる
31:login:Penguin
08/12/09 16:01:43 NHdcSNGH.net
おれが一番よく使うのは連想配列。
gawk '{w[$1]++;}END{for(i in w)print i,w[i];}' xxxx.txt | sort
みたいなことを何百回やったことか。
32:login:Penguin
09/04/21 01:25:03 8RfnrYFS.net
わらうw
URLリンク(awk.info)
object_variable = class_name.new[(optional parameters)]
object_variable.method_name(parameters)
object_variable.delete
33:login:Penguin
09/04/21 17:02:32 CHFddJcj.net
みなさん教えて下さい。
一行毎に読み込み@<と@>で囲まれた部分を
ランダムなアルファベット10文字に置換し、
元々@<@>に囲まれた部分の文字列と置換したランダムな文字列の対応を
別ファイルに書き出し
っていうのをやりたいです。
awkとsedでできるの?
pythonで書くべき?
34:login:Penguin
09/04/21 18:09:12 68A2ZTzG.net
できるっちゃーできるが、おすすめはしない。
BEGIN {
output = "hoge.txt"
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
len = length(chars)
srand()
}
{
if(match($0, /@<.*@>/)){
t = substr($0, RSTART+2, RLENGTH-4)
if(!(t in m)) m[t] = rndstr(10)
$0 = substr($0, 1, RSTART+1) m[t] substr($0, RSTART+RLENGTH-2)
}
}
END {
for(i in m) print i, m[i] > output
}
function rndstr(n, s){
while(n--) s = s substr(chars, int(rand()*len)+1, 1)
return s
}
35:login:Penguin
09/05/08 21:56:17 uniCaTc9.net
まじぽかのUMAちゃんは最高にかわいいNE!
36:login:Penguin
09/07/08 17:12:37 nwzD2hQJ.net
printfと$ / $がうまく両立できない・・・
文型向け授業でわざわざlinux使わせるなよ・・・
37:login:Penguin
09/07/14 15:14:45 OYRFUc74.net
やっぱAWKいいよねー
「プログラミング言語AWK」は買い逃してたんで再販速攻で買ったよ。
Excelなんてやってられねーっつーの
38:login:Penguin
09/07/14 15:45:04 ZhPQ90qn.net
>>37
Excelのvlookupみたいなリレーショナルな事がやりたい場合ってどーしてる?
39:login:Penguin
09/07/16 23:17:47 up+KJ4E4.net
連想配列でいいんちゃうん?
40:login:Penguin
09/07/18 04:58:19 p/gu39Bx.net
いやさ、複数のシートから引っ張ってくるような感じで、複数のテキストファイルを対象にしたい時。
41:login:Penguin
09/07/18 15:26:29 VCKoFo8D.net
そんなん普通に複数ファイル処理すればいいやん。
42:login:Penguin
09/07/18 16:20:59 p/gu39Bx.net
>>41
> そんなん普通に複数ファイル処理すればいいやん。
「普通に」の所kwsk
43:login:Penguin
09/07/18 21:51:54 VCKoFo8D.net
getlineすりゃえーやろ
44:login:Penguin
09/07/19 04:55:45 TalGZSOR.net
awk初心者です。質問させてください。
awkでアクセスカウンタを作ろうと思い、
以下のようなスクリプトを書いたのですが、
最後のhtmlへの出力(表示)の方法がわかりません。
どうしたらいいのでしょうか?
45:44
09/07/19 04:57:30 TalGZSOR.net
BEGIN{
#プロセスロック
lock()
#カウント数の読み込み
while (getline < count.dat > 0){
before_count = $1;
}
close(count.dat);
#カウントを1進める
new_count = before_count + 1;
#数字の置換を行う
sub(before_count, new_count, $1);
#プロセスロック解除
unlock()
}
46:44
09/07/19 04:58:33 TalGZSOR.net
print "Context-Type: text/text";
print "\r";
END{
#表示テンプレートの読み込み
while (getline < count.txt > 0){
txt_file[++i] = $0;
}
close(count.txt);
#あらかじめセットしてあるテンプレート上の文字列を置換
gsub("<!--#count.cgi--!>", new_count, $0);
print $0;
}
47:login:Penguin
09/07/19 11:16:35 xa/YVpR4.net
>>43
getline知らなかったわ。
難しそうだな・・・
48:login:Penguin
09/07/19 15:13:23 Ge8Nt7Pt.net
>>44
SSIの仕組みは理解できていますか。
URLリンク(httpd.apache.org)
49:hogehoge
09/07/21 14:50:51 PUGBjRE4.net
getline は毎回リファレンス見に行ってるなぁ
頭が劣化しとるわー
50:login:Penguin
09/08/01 15:31:08 z6H8O5Sr.net
こんなものが落ちてたw
URLリンク(mitya.pp.ru)
51:login:Penguin
09/08/15 20:33:21 7GY0b2Yy.net
Mac OS X Leopard 10.5.8でjgawkを使いたいのです。
ターミナルでawk '{print $0}' filenameですと日本語が悲しいです。
お使いのみなさん、使用法等教えて下さい。
52:login:Penguin
09/08/19 18:02:30 GJ3CGMhT.net
板違い。
53:login:Penguin
09/08/22 09:19:23 rmix/tng.net
Mac OS XをUnixとして使ってる人の為のスレ その15
スレリンク(mac板)
こっちのが詳しいかもね
54:正月前
09/12/29 22:19:45 UAwxD9+5.net
awk初心者です。
awkにはperlのjoinみたいの関数ありますか?
perl:
print join(":",$_);
55:login:Penguin
09/12/30 01:06:12 Q1gMau4C.net
データ集計に便利
56:login:Penguin
09/12/30 01:44:22 jMgIWDpO.net
>>54
BEGIN {OFS=":"}{$1=$1;print}
57:正月前
09/12/31 16:45:37 z/pUNj8p.net
重複を削除するBASHスクリプトに、perlの部分はawkの連想配列で書き換えたいんですが、splitした後の処理方法が分かりません
教えて頂ければ幸いです。
-----------------------------
hoge='a:b:c:d:a:b:c:d:a'
echo -n $hoge | perl -F: -ane 'chop;foreach(@F){$s{$_}++ or push(@b,$_)}print join(":",@b)'
-----------------------------
58:login:Penguin
10/01/05 11:48:18 iQ1ypvd/.net
素人なりですけど
echo -n $hoge | awk 'BEGIN{OFS=":"}{n=split($0,a,":");m=1;for(i=1;i<=n;i++){if(!(a[i]in b)){$m=a[i];b[$m]++;m++}}print}'
59:login:Penguin
10/01/05 12:34:43 APedkSZb.net
echo -n $hoge | awk 'a[$0]++<1{printf(NR>1?RS:_)$0}' RS=:
60:login:Penguin
10/01/05 12:50:31 APedkSZb.net
a[$0]++<1 じゃなくて
!a[$0]++ とした方が1バイト短くなるな
って、そういう趣旨じゃないか
61:login:Penguin
10/01/08 21:03:31 pPQjxZAI.net
プログラミングAWK 3度目の復刊
URLリンク(www.fukkan.com)
62:正月前
10/01/11 22:20:00 jx5sxsA2.net
>>58,59,60
ご回答、誠に有難うございました!
まだawkの部分理解してないけど、期待通りの動作が確認できました!
63:login:Penguin
10/03/16 14:08:38 hRXCRI1I.net
Linuxじゃないんですが、Gawk on Windowsだと、
gawk '{print $1;}' data.txt
ていうのは、クォーテーションはダブルにしないといけないんですね。。。
64:login:Penguin
10/03/16 14:27:11 OV90ZKd/.net
うん、引数文字列をどう解釈するかは awk じゃなくてシェルだから。
cmd.exe の仕様の問題であって、awk の側では対応しようにもできない。
65:login:Penguin
10/05/14 13:36:36 XjQaHos9.net
BEGIN {
printf "256倍のコードが提供されてる\n"
printf "URLリンク(books.ascii.jp) にアクセス\n"
printf "本には4756101623なんてのがついてるけど、本の通りに入れるとnot found\n"
}
END {
print "昔と本の内容が変わってるみたいだな"
}
66:login:Penguin
10/05/14 21:49:15 KfNsslph.net
END {
print "まだ始まってもねーよっ!"
}
BEGIN {
printf "・・・ごめ・・・\n"
}
67:login:Penguin
10/07/22 10:04:21 PFu3TuWN.net
{
if ($0 == "aka") print "red"
else print "blue"
}
の最も変態的な記法を教えて下さい。
68:login:Penguin
10/07/22 10:29:55 YKIn4IAK.net
$0=/aka/?"red":"blue"
69:login:Penguin
10/07/28 10:04:53 ZsEEtYoL.net
END {
system("echo " + $0 + " | perl -ne 'if(/"aka"/){print \"red\";}else{print \"blue\";}'")
}
70:初心者
10/11/04 22:16:05 UUOsCvwd.net
awkでシェルのPATH変数をマッチさせるときにスラッシュ//を使わない方法を教えていただけませんか?
perlだと##で行けますが
71:login:Penguin
10/11/04 23:15:07 mFaq3KZr.net
>>70はマルチ
72:初心者
10/11/05 06:33:50 HLS9uc8i.net
ごめんなさい!
マルチがだめとは知りませんでした。
73:login:Penguin
11/02/03 07:43:56 S25iv8qF.net
アルフレッド・V・恵方
74:login:Penguin
11/02/11 03:51:35 9907NRVa.net
awk で宛名書きだそう
AWK Users JP :: OSC2011 Kagawa 特設サイト
URLリンク(gauc.no-ip.org)
75:login:Penguin
11/02/11 21:58:36 W6G44msP.net
awkって今時オブジェクト指向もサポートしてねぇのか。
だせぇ・・・
とか思ってたらこんなのもあるんだな。
URLリンク(awk.info)
76:login:Penguin
11/05/24 19:21:38.77 iwctpm7O.net
awkの処理についてアドバイスを下さい。
スペースで区切られたテキストファイルがあります。
例(フィールド数も文字数も全部異なります)
abc efg hij URLリンク(www.example.com) xyz
123 URLリンク(www.example.org) she good love look good
4edi URLリンク(www.example.net)
こんな感じのテキストファイルからURLだけを抽出したい
場合、どう言った処理を行うと良いでしょうか?
printなどは使えそうにないし頭を抱えています。
是非お助け下さい。
77:login:Penguin
11/05/24 19:44:33.96 Z14Fpx2c.net
>>76
{for(i=0;i<=NF;i++)if($i ~ /^http:\/\/.+$/)print $i}
78:login:Penguin
11/05/24 19:52:09.13 WxByEtFQ.net
自分は
match($0, /http:\/\/[^ ]+/, f)
を使う気がする。
79:login:Penguin
11/05/24 20:22:38.00 jzDVjDvh.net
#!/bin/sh
cat 入力ファイル | tr ' \t' '\n' | awk '/^http:/'
…まで書きかけて、あれ、これawkじゃなくてgrepで良くね、と思ってしまった俺
80:login:Penguin
11/05/24 20:49:07.88 WxByEtFQ.net
/bin/shでもやはり自分は
expr 文字列 : '.*\(http:\/\/[^ ]*\).*'
を使う気がする。
81:login:Penguin
11/05/24 23:22:37.43 Rb7jhN0u.net
うちは>>77の条件を index($i, "http:") == 1 で書くだろうなぁ
でも、処理内容がそれだけなら sed -n 's/^.*\(http:[^ ]*\).*$/\1/p' だなぁ
避けられるなら正規表現は避けたほうが速いんじゃないかと思ってる
82:76
11/05/25 00:02:32.97 bOPlpFb7.net
まだどうしてそういう結果になるのか…が全然解らないのですが
一つ一つひもといて自分のものにしていきたいです。
みなさん本当に色々ありがとうございます。
83:login:Penguin
11/05/25 02:29:57.15 RCLD3Ghq.net
こういうのもpythonで書くようになってしまった俺は駄目なやつですか
84:login:Penguin
11/05/25 03:14:46.21 zyb8WUrO.net
流石にPythonはこういうサクッとしたテキスト処理には冗長すぎないか?
awk以外でならperl、さもなくばrubyあたりまでが俺は限度だなあ
85:login:Penguin
11/05/27 01:08:18.13 4uJpaTLS.net
BEGIN{ FS="http://"; }{ split($2, item, / /); print FS item[1]; }
とか
86:login:Penguin
11/06/02 03:19:02.91 LRv8LU2q.net
入力からランダムで1行表示する
awk '{ l[i++]=$0 }; END{ srand(); print l[int(i*rand())] }'
シェルスクリプトの方が短いか?
87:login:Penguin
11/06/02 09:37:16.89 Z7QDCEkg.net
こう書くと1行しかメモリに保存しないので入力行が多くとも平気です
BEGIN { srand() }
rand() * NR < 1 { x = $0 }
END { print x }
88:login:Penguin
11/06/02 20:42:21.58 ud/fx+Py.net
>>87
それだと行数が多いと後半の表示が少なくなっちゃう
89:login:Penguin
11/06/02 21:02:20.14 Z7QDCEkg.net
>>88
2行のときは
1/1の確率で1行目が選ばれる
→1/2%の確率で2行目が選ばれる
3行のときは
1/1の確率で1行目が選ばれる
→1/2の確率で2行目が選ばれる(この時点で1行目、2行目の確率はともに1/2)
→1/3の確率で3行目が選ばれる(2/3の確率で1or2行目が残り両者1/2なので全て1/3)
のように、基本的に確率は等しいはずですが……
浮動小数点演算の精度が問題になるような行数の話でしょうか?
90:86
11/06/02 22:17:12.88 jvZfUiPL.net
>>87
お、これはすごい!考えたなー。ぱっと思いついた奴は、天才だ。こんな風になりたいわ。
> 浮動小数点演算の精度が問題になるような行数の話でしょうか?
これは初め見たとき思ったけど、それが問題になるなら、
私の書いた方法でもメモリが逼迫してまずい気がします。
ただ、精度やrand()の性能で、実際に統計取ったら88の言うようになるのかもしれません。
あとは、rand()が1を返す実装はないよね?gawkのマニュアル読んで書くのだけど、
関数の説明が簡単に書き過ぎていて、ちょっと不安。
91:login:Penguin
11/06/02 22:37:43.51 jvZfUiPL.net
不要な部分を全部削って87の方が2バイト短いか。
mawkだとsrand()を省けるから、もっと短い。エレガント!
それにしても、4ヶ月ぶりに上がったんだ。ほんと人居ない。
92:login:Penguin
11/06/02 22:45:23.28 twwaY/QA.net
ワタスは監視してますよ。
93:login:Penguin
11/06/03 00:28:36.43 lUf7A9Qj.net
俺も。
94:login:Penguin
11/06/03 00:49:49.88 cydHNqeK.net
じゃあ、暫く書く
95:login:Penguin
11/06/03 01:07:11.81 cydHNqeK.net
空行を削除する
awk 1 RS=
sedだと、
sed /^$/d
かな?同じ9文字か。
96:login:Penguin
11/06/03 09:20:27.26 5n/j2qmP.net
>>89
rand()を全行で実行しているから、
1行目には2行目以降が x を上書きする確率が加わり、
2行目には3行目以降が x を上書きする確率が加わり、
ってことになるんじゃないのかな。
全4行の場合
1行目が表示される確率 1/1*1/2*1/3*1/4
2行目が表示される確率 1/2*1/3*1/4
3行目が表示される確率 1/3*1/4
4行目が表示される確率 1/4
って感じで、最終行が表示される確率が一番大きい気かします。
rand()をBEGINの中に入れてしまえば全部同じだけど。
97:login:Penguin
11/06/03 09:45:41.12 TAmMFFcQ.net
>>96
1/1*1/2*1/3*1/4 + 1/2*1/3*1/4 + 1/3*1/4 + 1/4 = 5/12 (≠ 1)
なので、それが誤りなのは、すぐに分かるはずですが……
それらの確率を足したら1になっていないといけません
ここは高校数学の確率統計のお話をするスレではありませんが、
以下のように考えたらお分かりでしょうか?
1行目が表示される確率は 1/1*1/2*2/3*3/4 = 1/4
(1行目が選ばれる確率 * 2行目が選ばれない確率 * 3行目が選ばれない確率 * 4行目が選ばれない確率)
2行目が表示される確率は 1/2*2/3*3/4 = 1/4
(2行目が選ばれる確率 * 3行目が選ばれない確率 * 4行目が選ばれない確率)
3行目が表示される確率は 1/3*3/4 = 1/4
(3行目が選ばれる確率 * 4行目が選ばれない確率)
4行目が表示される確率は 1/4
(4行目が選ばれる確率)
98:login:Penguin
11/06/03 12:56:40.94 yy0ffQt3.net
>>97
そうでした。電車の中で気が付きました。
x が上書きされる確率じゃなくて、上書きされない確率を掛けないといけませんでした。
納得。
99:login:Penguin
11/06/03 22:11:19.49 cydHNqeK.net
なんか利点が無いように見えるので、sedじゃなくawkを使う理由を探してみた。
tar xf linux-2.6.39.1.tar.bz2 --wildcards '*.c' -O >src.txt
time cat src.txt |awk 1 RS= >/dev/null
real 0m3.172s
user 0m2.786s
sys 0m0.757s
time cat src.txt |sed /^$/d >/dev/null
real 0m32.503s
user 0m31.465s
sys 0m0.882s
※参考
time cat src.txt |cat >/dev/null
real 0m0.606s
user 0m0.036s
sys 0m0.586s
おー。sedより、ずっとはやーい
やったね、awk!
100:login:Penguin
11/06/03 22:26:22.52 lSuFEE/Z.net
うむ。grep よりも awk の方が速かった記憶がある。
101:login:Penguin
11/06/04 12:42:54.20 HzZByxDX.net
複数のtimeコマンドの出力から平均を求める
awk -Fm '{ a[$1]+=$2; a[0,$1]++ }; END{ for(i in a) if(i~/^[rus]/) printf "%sm%.3fs\n",i,a[i]/a[0,i] }'
昨日の時間計測のために書いた。
いろいろ問題あり。これ以上短くかけなかった、残念だわ。
sedがすっごい遅いので全部メモリに読み込んで処理させてみた。
time cat src.txt |sed -n '1x;1!H;${x;s/\n\n\+/\n/gp}' >/dev/null
real 0m24.515s
user 0m18.584s
sys 0m2.005s
# ちなみに、昨日のも含めて3回試した結果を平均した
…やっぱ遅い。GNU sedが悪いの?スレ的に満足な結果だけど。
便利で速くてシンプルなのに、あまり使われない紹介されない、消え行くawk、カワイソス
102:login:Penguin
11/06/04 13:21:18.28 El9DLlK0.net
フィールドを抜き出すワンライナーはやっぱawkでしょ
perl -pae'$_=$F[8].$/'
ruby -nae'puts$F[8]'
awk 'print$9'
103:login:Penguin
11/06/05 00:51:57.16 kp3qNbsC.net
>>95の表記初めて見た
このスレの住民にはこれくらい当たり前なのか…
104:login:Penguin
11/06/05 05:45:10.75 jNueNt7Q.net
それってどういう構造なんだ?
1番目の引数である「1」は「パターンは常に成り立つ、アクションは指定しない(=レコードを加工せずに出力)」というawkコードだろうけど
その次の引数って入力ファイルになるはずじゃ?
105:login:Penguin
11/06/05 07:57:57.27 k4Gl3aKk.net
わかんねー。なんでこれをコマンドプロンプトに打ち込んで、うまくいくのか。
gawk 1 RS= testfile.txt
106:login:Penguin
11/06/05 08:10:41.12 SucWQMoo.net
RSが空だとRS=\n+として解釈されるんじゃまいか
107:login:Penguin
11/06/05 08:50:42.42 jNueNt7Q.net
だとしても、何故にRS=\n+がコードとして実行されるの?
コードは1で終わってね?
108:login:Penguin
11/06/05 09:34:08.07 jNueNt7Q.net
自己解決、assignment optionsなんて仕様があったのか
109:login:Penguin
11/06/05 09:55:54.81 Tq0aYVo2.net
おー、いっぱい居るね!まだまだやれるぞ、awk!
一応説明すると、プログラム自体は>>104の解釈の通りです。
また、RS=""なら、RS="\n\n+"とほぼ同じです。
違いは、RS=""はファイルの先頭に改行が続くとき、それを無視します。
ついでに、POSIXではRSに2文字以上設定すると、結果は不定とされています。
gawkでは、正規表現を使える拡張がされていますけど。
引数ですが、ここに代入文を書くとBEGINの後に処理されます。
まあ、ああ書いたのは-vオプションを使うと3文字コマンドが増えるからなんですが、
こういう変数の設定方法もあるということで。
110:login:Penguin
11/06/05 10:44:14.22 3GXVErWF.net
awk /./
の7文字だけでOK
RSは初期値が入ってるんだから
111:login:Penguin
11/06/05 14:48:51.10 jNueNt7Q.net
そうか、sed /^$/d って grep . で良かったんだな
112:login:Penguin
11/06/05 19:30:13.18 Tq0aYVo2.net
>>109
書き忘れ。
RS=""のとき、ファイルの末尾の改行も無視する。
あと、FSが"\n"に設定されているように振舞う。
元々複数行を一気に処理したい場合に使うことを想定してたのだろう。
>>110
ああ、すごい、これは短い!頭柔らかいねえ、スマートだわ。
夢の中でも考えたのに…無能過ぎワラタ
>>111
grep最強伝説はっじまっ…らないぞ。同じ方法で時間計測したら2時間半たっても終わらない。
grep捨ててawkを使おう!
113:login:Penguin
11/06/05 20:13:50.57 k4Gl3aKk.net
awkはじまったなw
114:login:Penguin
11/06/07 23:28:39.30 pixJYa/G.net
改行をWindows向けに置き換える
awk '{ print $0 "\r" }'
こっちの方が速くて短いか。
awk 1 ORS='\r\n'
115:login:Penguin
11/06/08 00:28:22.25 AGBbsX8a.net
速くて短いし、そっちのがコードと意味が一致するかと
116:login:Penguin
11/06/08 01:01:03.76 48mfCmU6.net
そっかー、分かり易さは、上の方だと思ったのですよ。
下のは、awkがどう動くかを知ってないと気持ち悪い感じ。
101みたいなsedスクリプトを、初めて見たときのような。
117:login:Penguin
11/06/08 06:42:33.45 3juXEiES.net
上だと\n\rになっちゃうけど
CRLFの\r\nとは違うから
Windowsでは認識しないのでは?
118:login:Penguin
11/06/08 12:16:04.61 AGBbsX8a.net
>>117
いや、上のコードは\rが先に出力されるからあってるよ、改行じゃなくて普通の可読文字でためしてみ
119:login:Penguin
11/06/09 23:01:35.59 b4gs0WW2.net
Windows向けの改行をUnix向けに置き換える
awk 1 RS=\\r ORS=
改行弄ったら戻したいよね。一文字多い別解。
awk 'sub(/\r/,"")'
>>117
$0にRSは含まれない。print文での出力のときにORSが付けられる。
だから、114のような書き方ができるのです。
え?素直にnkfとかtr使うべきだって?ごめんちゃい。
tr -d \\r
nkf -d
短いねえ…そして速そう…
120:login:Penguin
11/06/12 23:20:31.21 8N8UbY4v.net
正規表現にマッチした部分を全て置換し、その行を表示する
awk 'gsub(/foo/,"bar")'
sedで書くとこうか。
sed -n 's/foo/bar/gp'
こういう処理はsedの方が楽に書けるのかな、うーん。
>>119
awk 'sub(/\r/,"")+1'
下はこの方が良かった。うっかりファイルの内容を消してしまいそうだ。
121:login:Penguin
11/06/13 19:11:34.42 NkVjy07h.net
だいたい置換はsedで書いたほうが素直に読みやすいと思う
逆にそれ以外のツールでもスクリプトでもなく、awkで書きたくなるのはフィールドを使うものかな
122:login:Penguin
11/06/13 22:57:31.80 0YRj9/YK.net
いや、しかし最近目から鱗落ちまくりです。沢山の書き込みに感謝感謝。
123:login:Penguin
11/06/14 21:28:05.61 ODOs6IfG.net
中身の検索はgrep
置換はsedとかtr
結合はcatとかpaste
計算はexprとか場合によりwc
多少組み合わせる必要があるならshでシェルスクリプトwhile、for、read、shiftみたいな
大抵やりたいことに対応するコマンドがある。awkでプログラム風に書くのは人を選ぶのかもね。
このスレが太古の昔に沈んでしまったのも、そのせいか。
実際、プログラム板にもあるけど、あちらはそこそこ書き込みがある。
Linuxも既にGUI全盛、バッチ処理もGUIでという流れか、シェルスクリプト総合スレもなくなってしまったし。
板全体がほとんど動作報告中心になって、Linuxやシステム全体のコアな部分、プログラミングの話題を
話す場所が消えてしまったような気がする。気がするだけ。
124:login:Penguin
11/06/14 23:04:41.82 CILjaNiq.net
シェルスクリプトはUnix板で話せばいいしな
Linuxでメジャーなシェルは大概BSDとかでも使えるし
125:login:Penguin
11/06/15 21:26:33.76 QLTzRiMx.net
HTMLファイルからタイトル(title要素の持つ文字列)を取得する
awk '/<title>/{ b=1 }; b{ s=s $0 RS }; /<\/title>/{ gsub(/.*<title>|<\/title>.*/,"",s); print s; exit }'
分かりやすさと効率を無視、短さを優先した別解。
awk '{ s=t=s $0 RS }; gsub(/.*<title>|<\/title>.*/,"",t)>1{ print t; exit }'
どっかのスレにて、出遅れ、荒れ気味なので。
改行も保存してるけど、必要ないならRSを除けばいい。
perlの無いシステムでもawkはある!はず。
いつの間にかUnix板のシェルスクリプトスレまで無くなってやがる…
126:login:Penguin
11/06/15 22:50:13.28 QFQ0PbYI.net
ホントだ、何でだろ
127:login:Penguin
11/06/16 00:11:48.62 oqM9OV4C.net
980超えたからだな
128:login:Penguin
11/06/16 00:29:05.98 G4IIl/GQ.net
ああ、そうだったのかー。でもまだ次スレ建ってないね。
スレ建てた事無いから分からないけど、最近建て難いようだし、そのせいかな。
112で諦めたgrepで空行を削除する処理の時間計測の結果。
time cat src.txt |grep . >/dev/null
real 342m52.646s
user 337m34.249s
sys 0m7.174s
grep -V
GNU grep 2.6.3
寝て起きたら終わっていた。余程grepを必要とするときくらいしか、使うべきじゃない。
# 一つのケースでしかないのだけどね。ただ、これほど遅いとは…
129:login:Penguin
11/06/16 09:39:38.00 iftKRWTE.net
>>125
それ、xgawkで書くとどんなになるの?
130:login:Penguin
11/06/16 10:18:36.69 x2P5GNsY.net
>>129
gawk '$0=gensub("</?title>", "", "g", RT)' RS='<title>.*</title>' IGNORECASE=1
131:login:Penguin
11/06/19 18:13:12.21 O1oYVV5e.net
>>128
待てよ…awkでもパターン検索だけなら遜色なく書けて
かつawkのが速いんじゃ、grepの存在価値って…
ああ、複数ファイルからの検索があるか
つーても、これもawkでFILENAMEとFNR明示したら書けちゃうか…
132:login:Penguin
11/06/20 00:28:57.29 rO0fE487.net
>>131
まあgrepで済む物は記述が簡単なわけで。
133:login:Penguin
11/07/01 01:20:48.84 NsJJwAAV.net
xgawkは使ってないなぁ。使ってる鳥には無いし。XHTMLが対象ならもっと短く書けるのだろうか。
>>130
おー!これはクール。
gawkは大文字小文字無視する処理書くの楽だね。流石だ。
>>131
前後の行を表示させたりが楽かも。まあ、滅多にお世話になることないけど…
rm -r *でデータ飛ばしたから、そのサルベージに役立つとは…orz
134:login:Penguin
11/07/01 02:00:56.40 NsJJwAAV.net
コマンド`grep -C N regex'を真似する
awk 'BEGIN{ L=N; b=L+1; n=L+2; i=j=0; s=2 };
/regex/{ if (L&&s==1) print "--"; while (i!=j) { print a[i++]; if (i==b) i=0 } n=s=0 };
n>L{ a[j++]=$0; if (j==b) j=0; if (i==j) { i++; if (i==b) i=0; if (!s) s++ } next }; n++<=L'
書けた!!データ飛ばすは、アク禁に巻き込まれるは散々だった。よく見たら凄い遅レスだ…
データのサルベージに使ったgrep -Cを書いてみた。流石にワンライナーとは言い難い。
効率はもう少し良くできそうだけど、これ以上短くするのは無理だった。実力が足りない;_;
あまりに読み辛いので、pastebinに整形版を置いておきます。
URLリンク(pastebin.com)
135:login:Penguin
11/07/01 23:56:01.08 NsJJwAAV.net
時間計測の結果を追記。
time grep -C 500 'public class\|jar cf\|javac\|\.java' <strings_a.txt >/dev/null
real 0m2.112s
user 0m1.528s
sys 0m0.311s
time awk 'BEGIN{ L=500;(略)}; /public class|jar cf|javac|\.java/{(略)}; n++<=L' <strings_a.txt >/dev/null
real 1m20.089s
user 1m15.426s
sys 0m0.389s
一回計測。約50倍くらい遅いか。ネイティブとスクリプトだから、まあこうなる、と言ったところだと思う。
短い処理なら有利な場合もあるんだろうけど。
136:login:Penguin
11/07/04 00:51:55.26 Zh/tRXtG.net
指定された正規表現を含むファイルの名前を表示する
awk 'f!=FILENAME && /regex/{ print f=FILENAME }'
gawkならこう書ける。
awk '/regex/{ print FILENAME; nextfile }'
>>131に近い。FNRも使って検索結果を表示するスクリプトも、あまり複雑にはならなそう。
下の方が速いけど、mawkだとnextfileをサポートしてなかった。
grep -lと同じ結果で、指定する正規表現によってawkの方が速く動くこともあるよ。
137:login:Penguin
11/07/05 00:27:00.04 iZUKjs1P.net
AwkのGNU実装、「Gawk 4.0」が登場
URLリンク(sourceforge.jp)
138:login:Penguin
11/07/06 07:36:41.51 Q5KmFo/I.net
dgawk便利だね。
139:login:Penguin
11/07/07 02:54:29.78 bHkfWT8R.net
md5sumコマンドの出力から重複するMD5チェックサムを持つファイルを列挙する
awk '{ i=++a[$1,0]; a[$1,i]=$0 }; END{ for (i in a) if (!k[split(i,k,SUBSEP)] && a[i]>1) for (j=1; j<=a[i]; j++) print a[k[1],j] }'
まだ短く書けそうかな?
あるディレクトリ以下を調べるなら、こんな感じでMD5チェックサムを計算する。
find sda6.photorec -type f -exec md5sum '{}' +
この出力をパイプか何かで食わせればいい。
gawkの4.0が出たか。いろんな亜種を使う機会があるから、なかなか依存したプログラムは書けないね。
よく使うのはgawkとmawkだけど、皆何をよく使ってるのだろう?使用者が少ないから余計に気になる。
デバッガって使いやすい?いまだにprintで表示してやってるなぁ。
140:login:Penguin
11/07/07 11:14:47.64 WpiH6Omg.net
gdbやpythonデバッガやらと似てるのでとっつきやすくはあると思う。
141:login:Penguin
11/07/08 00:37:18.45 gfdD9pMC.net
fileコマンドの出力からテキストファイル(表示可能なファイル)だけ取得する
awk '{ q=$1; $1="" }; /text/{ print q }' -F:
FSは-Fオプションを使って1文字短く書く。使い方は次のようにパイプでつなぐ。
find sda6.photorec -type f -exec file '{}' + |awk '{ q="'\''" $1 "'\''"; $1="" }; /text/{ print q }' -F: |xargs -i cp -v "{}" sda6.photorec.text/
xargsに渡すためクォートしてる。ワンラインにシングルクォーテーション入ると書きづらい。
でも、こういう処理はawkが一番楽だね。
>>140
へー、それは良いね!って思ったけど自分が書くような短いスクリプトには不要かも…
今、awkでデバッガが重宝するような長いスクリプトって、どれほど書かれてるんだろう?
142:login:Penguin
11/07/08 17:00:09.91 Iqd7ejAo.net
gawkだけでurlエンコードできますか?
143:login:Penguin
11/07/08 17:42:07.69 baIcylwh.net
>>142
BEGIN{for(;i<256;++i)c[t=sprintf("%c",i)]= i==32?"+":t~/[0-9A-Za-z]/?t:"%"sprintf("%x",i)}
{for(s=i="";i++<length;s=s c[substr($0,i,1)]); print s}
マルチバイト対応してて length() とか substr() とかが
バイト数ではなく文字数を数えて動作するような小賢しい awk だと逆に動かない。
144:login:Penguin
11/07/08 19:08:55.72 gwMiQJC1.net
Gawk4.0の新オプションはそういう時のためにある訳か。
145:login:Penguin
11/07/08 19:46:11.33 CbA9+OJF.net
>>141
ファイル名には : も使えるから汎用じゃないね。
あとショートコードを意識してるようなのに不必要なセミコロンとカッコ内側のスペースが
あるのはスタイルとして一貫してないな。
146:login:Penguin
11/07/08 20:31:15.76 bJ65EBT8.net
昨日はこのスレの3周年だったのです。
147:login:Penguin
11/07/09 07:11:28.80 OcQSMVqG.net
このスレ七夕に立ってたのか。3周年って言われると、まだ3年かと思ってしまう。
3年前といえばLLが盛り上がってた頃だから、もう少し前に立ってればここももっと盛り上がっていたかもね。
gawkは新しくなったけど、確実に他のLLに流れてるよなぁ…
148:login:Penguin
11/07/09 07:34:21.50 OcQSMVqG.net
>>145
どこぞのOSでは使えない文字をわざわざファイル名に使わないよねって思い、楽してます。
ただパスに含まれる可能性はあるので、そういった場合は file -F; のようにして
fileコマンドの使うセパレータを(使われていない)任意の文字に設定して下さい。
スタイルに関しては全くその通りで、自分でも冗長だと思いつつ残しています。以下言い訳…
スペースは読み辛くなると思う所にだけ残すようにしています。また、ここに貼ると、
表示がプロポーショナルフォントになって、幅が狭い文字の隣から一部分コピペする操作をよくミスるため、
そういった幅の狭い文字(}とか;)の後には残しています。
ifやwhileの後、print $1 や "a" b "c" に含まれるものも省略できますが、違和感が物凄いので残しています。
セミコロンは(POSIXの仕様で)必要なものだけを残しているつもりです。
過去の互換性のために省略可能なものは、残すようにしています。
149:login:Penguin
11/07/09 11:49:25.24 Ne909y4H.net
>>147
他のLLに比べて、Windowsで使われる頻度が滅法低いのも一因かなあと思う
コマンドプロンプトで awk がやれることって、BEGIN{ } に何か書くぐらいしか無いのよね
だったらPerlとかでいいじゃん、って話になっちゃう
150:login:Penguin
11/07/09 15:37:05.06 Q3LPccup.net
awkオンリーってのがムズイので、Cygwin上でsh他外部コマンドと組み合わせて使う事が多い
151:login:Penguin
11/07/09 17:09:11.40 Ne909y4H.net
結局awkはプログラミング言語というより「ちょっとややこしいことも出来るUnix系テキストツール」としての性格が強いんだと思う。
152:login:Penguin
11/07/09 17:38:27.04 OcQSMVqG.net
そうか、Windowsでの使用率は考えたことなかったわ。そっちで今何が流行ってるのかは知らないけど、
GUI扱うライブラリを持つLLが使われてそうだ。こればかりは厳しい。そもそも、ライブラリって概念がないのが避けられてるのかな。
153:login:Penguin
11/07/09 17:45:48.05 Ne909y4H.net
>>152
いやGUIはほとんどVisualStudio、Java、Delphi辺りで喰われてるよ
その他のGUIツールもあるにはあるんだけど
LLの主な出番は向こうでもテキストフィルタだったりはするんだけど
Windowsにはそもそも組み合わせるような小物のコマンド群が無いから
やりたい処理の1から10まで全部を1個(もしくは一連)のスクリプトで済ませるのが主流
だからたとえLLであっても、1言語で最初から最後までを完結できる大きめの言語が好まれるのよ
awkは単品で使うより、組み合わせで威力を発揮する言語だからか、あまり使われない
154:login:Penguin
11/07/09 17:49:54.27 Ne909y4H.net
あ、いやテキストフィルタよりもCGIとかのWebでの出番のが多いか?
155:login:Penguin
11/07/09 18:38:35.83 Q3LPccup.net
cgiでawk使う事って、珍しくないの?
156:login:Penguin
11/07/09 18:59:11.34 wbKjo2Ly.net
awkでcgiも出来なくもないだろうけど、っていうかそれでblog作ろうとしてた人もいたな
157:login:Penguin
11/07/09 19:07:48.49 OcQSMVqG.net
>>153
ホント?Delphiなんて懐かしいなぁ。GUIでなく、Webでの利用なら、もはやOSあまり関係ないような気も。よく分からん。
>>155
聞いたことはあるけど、見たことはない程度には珍しいかと。gawkはネットに対応してるから頑張ればサーバにもなれるかな?
158:login:Penguin
11/07/09 19:58:21.74 Ne909y4H.net
>>157
いやまあDelphiは新規としては瀕死で、過去遺産の保守で使われるのが主だけどね。
159:login:Penguin
11/07/09 20:14:45.59 Q3LPccup.net
やっぱawkでcgiってマイナーか。しかしblogつーか、CMS作ろうとするのは凄いなw
ちなみにgawkのhttpdって、どっかで見たなあ。
160:login:Penguin
11/07/09 20:57:21.04 CG+O7ik7.net
httプロトコルでなく、俺プロトコル用サーバならawkスクリプトでやってる。
httpに例えるなら、ファイルか404を返すだけの簡単なやつ。
しかもgawkのソケットでなく、inetdから呼ばれるだけの低機能。
161:login:Penguin
11/07/10 16:44:29.85 nBMv6TVB.net
私はエンバカになっても応援してるよ!>Delphi
>>160
今更inetdって思ってて、ろくに調べてなかったけど、socatみたいな機能もあるんだね。
ポート監視→サーバ起動って機能しかないと思ってたよ。
これならネット非対応なawkでもhttpdくらい実装できる?…バイナリまともに扱えそうなのはgawkしかねー。
テキストオンリーまでなら何とかできそうだけど、画像も転送できないか。厳しい制限だ。
162:login:Penguin
11/07/11 00:10:26.11 ShNAK0f0.net
個人的にはawkは今まで通りシェルのお供でいいと思う
perlとかでもそりゃ書けんことは無いが
シェルのお供として使うには微妙に違和感あるんだよな~
163:login:Penguin
11/07/14 01:48:17.88 I04Pjvnw.net
>>134
これを使って正規表現によって grep とどれだけ実行速度に差が出るのか計ってみた。
URLリンク(pastebin.com)
数字だけではよく分からないので、ユーザ時間のグラフを描いた。
URLリンク(i53.tinypic.com)
赤がawk、青がgrep
こっちじゃないと見れないかも → URLリンク(tinypic.com)
awk もばらつきがあるけど、grep ほどではない。
どちらも、マッチする可能性が高い正規表現は遅くなる傾向があるのかなぁ?
164:login:Penguin
11/07/14 23:45:53.76 I04Pjvnw.net
引数で与えられたファイルをメモリに読み込み繰り返し検索する
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGV=1};{for(i=0;i<n;++i)if(a[i]~$0)print a[i]}'
最近、用途が限られているもの中心だったので使えそうなワンライナーにしてみたよ。きっと。
指摘を受けたので、スペースは削ることにしました。ちっと見づらい?
↓は大文字小文字を無視するもの。こうするとdmesgの出力を何回も検索できる。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)l[n++]=tolower(a[+n]=$0);close(f);ARGC=1};{for(i=0;i<n;++i)if(l[i]~tolower($0))print a[i]}' <(dmesg)
165:login:Penguin
11/07/15 08:26:42.31 ZNSgasJH.net
見にくいので、セミコロンで改行して欲しい。
166:login:Penguin
11/07/16 01:01:45.88 bjjWiIZ6.net
凄く長くなりそう><
167:login:Penguin
11/07/16 08:37:16.54 n6+rd2ar.net
長過ぎるone-linerを見易く改行するone-linerを書きなさい
168:login:Penguin
11/07/18 15:25:02.07 7hj9vKr7.net
しまったー!書き込む前にちょろっと書き換えたところがバグってました。mawkで動きません。
>>164の下のスクリプトは次に書き換えてください。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};{for(i=0;i<n;++i)if(tolower(a[i])~tolower($0))print a[i]}'
awkのシーケンスポイントってC言語と同じなのかな…痛いミス。
おまけ。使ってるやつ。エスケープシーケンスを使って見つかった文字列に色を付けた。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};
{for(i=j=0;i<n;++i)if(k=match(tolower(a[i]),tolower($0)))print C(j=!j)I(I(a[i],C(39),k+RLENGTH),C(31),k);print C()};
function C(n){return"\033["n"m"};function I(x,y,z){return substr(x,1,z-1)y substr(x,z)}'
パターンごとに改行を入れた。少し見やすいか?
>>164の上のスクリプトに色を付ける機能を追加。ずっと分かりやすいと思う。
awk 'BEGIN{f=ARGV[1];while((getline<f)>0)a[n++]=$0;close(f);ARGC=1};
{for(i=j=0;i<n;++i){l=a[i];if(sub($0,C(31)"&"C(39),l))print C(j=!j)l}print C()};
function C(n){return"\033["n"m"}'
subをgsubにするとマッチする全ての文字列に色を付けられるよ。
gawkならgensub使ってもう少し短く書けるかもしれない。IGNORECASE=1で簡単に大文字小文字無視できるし。
169:login:Penguin
11/08/15 19:41:00.75 yTTHvZyj.net
classは使えるようになりましたか? > gawk4
170:login:Penguin
11/08/16 15:17:21.28 Tuhp+s5y.net
つ URLリンク(awk.info)
171:login:Penguin
11/08/16 15:27:51.45 2FR0TK0E.net
ちゃんとご自分で読んだものを「つ」されてますか?
172:login:Penguin
11/08/21 15:15:49.17 EL3rN3cw.net
ふるいけや "かわず とびこむ" みずのおと
といったレコードを、
field[1]=ふるいけや
field[2]=かわず とびこむ
field[3]=みずのおと
number_of_field = 3
とフィールド分割するすっりした方法を教えて下さい。
173:login:Penguin
11/08/21 16:45:12.36 iSpKRH15.net
" で split すればいい
174:login:Penguin
11/08/21 18:45:31.99 EL3rN3cw.net
やはり2chでは馬鹿レスしかつかんか。
175:login:Penguin
11/08/21 18:56:18.08 Fst2eXVD.net
>>172
それ、CSVとかでもよく語られることだけど、意外と面倒なのよ。
例えば「"」自体を文字列に入れたい場合はどうするのか、とか色々決めなきゃならんし。
176:170
11/08/21 19:12:48.13 yoctsNv6.net
あれ?awkでclass使いたいって事なんでしょ?
URLリンク(ja.wikibooks.org)
177:login:Penguin
11/08/21 19:24:48.22 yoctsNv6.net
>172
素直に区切り文字を変えるしか...
ふるいけや,かわず とびこむ,みずのおと
FS=","
178:172
11/08/21 22:01:39.45 Mb9j323G.net
自己レスです。
BEGIN { FPAT = "([^" FS "]+)|(\"[^\"]+\")" }
みたいな事をしました。
179:login:Penguin
11/08/22 10:27:15.81 bf5ta6rs.net
awk にわけわかんな機能を増やすよりも、
RFC4180 互換なフィールド分割オプションを実装すればいいのにといつも思う。
180:login:Penguin
11/08/22 10:33:38.59 uwcmdhh8.net
馬鹿の巣窟にわざわざ書き込むな馬鹿
181:login:Penguin
11/08/22 11:11:08.80 4smqF+KA.net
見事に馬鹿の巣窟と化したねえ
182:login:Penguin
11/11/28 19:46:48.89 NIKBR+N1.net
perl -e 'print $1 if /href="(¥d¥d¥d¥d-¥d¥d¥-¥d¥d)"/'
と同じことをawkでやろうとしているのですがわかりません。
awk -e '/href="(¥d¥d¥d¥d-¥d¥d¥-¥d¥d)"/ { print ??? }'
グルーピングしたあとにそれを取り出す方法を探したのですが、わかりませんでした。
awkまたはsedでのやり方を教えて下さい。
183:login:Penguin
11/11/28 20:46:46.52 skmC2JM9.net
>>181
馬鹿じゃないあなたに是非>>182の回答をしてもらおうか。
184:login:Penguin
11/11/28 21:15:52.48 Oo5SGhpX.net
>>182
perl がわからないから求めるものがよくわからないけれど、こんな感じ?
awk '/href=\"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\"/ {print $1}' input.html
awk '/href=\"\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\)\"/ {print $1}' input.html
BEGIN とか使ったほうがいいのかもしれないけれど
awk '/href=\"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\"/ {print $1} BEGIN { 何か書く }' input.html
185:login:Penguin
11/11/28 23:48:15.14 mynsjW2o.net
>>182
どのawk使っているか分からないし、入力の仕様も分からないけど、どこでも動くのはこんな感じ
awk -F\" '/href=/ { for (i=1; i<=NF; i++) if ($i ~ /href=$/ && $(i+1) ~ /[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/) print $++i }'
gawkでも正規表現パターンのグループを保存している組み込み変数はなかった気がする
186:login:Penguin
11/11/29 00:49:47.68 6tCpTQmb.net
gawk4.0なら
awk '{if (match($0,"href=([0-9]{4}-[0-9][0-9]-[0-9][0-9])",a)) print a[1]}'
じゃ駄目?
187:login:Penguin
11/11/29 01:04:03.02 6tCpTQmb.net
ごめん、
awk '{if (match($0,"href=\"([0-9]{4}-[0-9][0-9]-[0-9][0-9])\"",a)) print a[1]}'
188:login:Penguin
11/11/29 16:01:19.31 vLvhB/JG.net
>>184-186
うーん、あまりわかりやすい方法ではないですね。
メンテナンスしにくいコードになってしまうので、perlが使えるよう上司に交渉したほうがよさそうです。
回答いただいた方、ありがとうございました。
189:login:Penguin
11/11/29 16:28:12.31 MmS6Zrem.net
>>185はともかく>>186-187の方がPerlみたいにグローバル変数にマッチ結果を入れるより分かりやすいと思うのって俺だけ?
190:login:Penguin
11/11/29 17:00:24.97 vLvhB/JG.net
>>189
186は、単にgawk独自の拡張機能を知ってないとわかりにくいというだけであり、
マッチした結果を明示的に変数に代入するのはいいことだと思います。
なお個人的には
match(string, rexp, matched)
はmatchedがいわゆるout変数になるため分かりにくいです。
matched = match(string, rexp)
のほうがよかったです。
191:login:Penguin
11/11/29 17:27:04.96 8ESv/UnH.net
>>190
何言っているのかちょっと分からん。言語仕様上awkは配列を返せないだろ
192:login:Penguin
11/11/30 00:16:56.92 CRejWMLU.net
gawk独自の実装はどうも…という話がよく出てくるけど、
gawk/mawk/true awk相互で運用する必要ってよくあるものなの?
またはbusyboxのawkで使いたいとか?
193:login:Penguin
11/11/30 02:39:57.37 TGbwU425.net
gawkは最早awkと呼ぶには拡張され過ぎている感じがある
よくあるかは知らないけど、少なくとも手元の環境には3種類のawkがあって、gawkの拡張が使えない
mawkはnextfileにも対応してないし、awkは実装の差がかなり大きいと思うよ
194:login:Penguin
11/12/01 00:38:55.88 cIbdY7f8.net
gawkが拡張されてるのは承知だが、gawk依存だとメンテが大変だから
perlというロジックが分かりにくい。
195:login:Penguin
11/12/03 01:06:16.24 0aRpOAWF.net
gawkで
(ああ(いい((うう)(ええ))))
この行の「ああ」「いい」「うう」「ええ」を変数に入れたい時、
何か定番な書き方はありますか?
196:login:Penguin
11/12/03 01:56:31.82 ivCb+cNz.net
何を期待しているのか分からん
括弧を区切りにして分けたいだけならFS="[()]+"で
配列に入れたいならsplitでどう?
197:login:Penguin
11/12/03 01:59:50.51 ivCb+cNz.net
もしかして括弧の対応をとりながら分けたいってことなら
gawkに詳しい別の誰かに期待してくれ。拡張正規表現でも無理じゃなかったか
198:login:Penguin
13/03/07 06:45:54.68 4D+kiInZ.net
str = "(ああ(いい((うう)(ええ))))"
while (match(str,/([^()]*)/)) {
v = substr(str,RSTART+1,RLENGTH-2)
str = substr(str,1,RSTART-1) substr(str,RSTART+RLENGTH)
if (v != "") {
# 取り出した v をなんかする
}
}
とかじゃ駄目なの?
ちゃんと構文解析するなら yacc (bison) を使わないと駄目だよ
199:login:Penguin
13/03/12 12:42:06.70 qyuXfAO9.net
_
|O\
| \ キリキリ
∧|∧ \ キリキリ
ググゥ>(;⌒ヽ \
∪ | (~)
∪∪ γ´⌒`ヽ
) ) {i:i:i:i:i:i:i:i:}
( ( ( ´・ω・)、
(O ⌒ )O
⊂_)∪
200:login:Penguin
13/03/20 12:52:31.89 YjhinaPB.net
しつもん
URLリンク(gauc.no-ip.org) のスクリプトの35行目
for (++day;;) {
の意味と動作がよくわからんです
which で等価なループを書くとどんな感じになるの? カコイイ先輩おしえてplz
201:login:Penguin
13/03/20 20:01:52.34 BDkPT9MX.net
>>200
++day; while (1) {
202:login:Penguin
13/03/20 22:53:22.42 YjhinaPB.net
>>201
先輩ありがとう
++day を最初に持ってくるのはオイラも考えたんですが、break の条件式も反転して持ってくればおkかなと思って
$ diff time.awk time2.awk
34,35c34,35
<
< for (++day;;) {
---
> ++day;
> while (day >= year_days) {
49,52d48
< }
<
< if (day < year_days) {
< break;
てやったら1日ズレちゃったんだけどこれってどこがマズいんでしょうか (・ω・` )
203:login:Penguin
13/03/22 01:16:43.88 Jmj0m+XB.net
>>202
そのbreakの後にも続きの処理があるだろ。年もズレるんじゃない?
204:200
13/03/24 14:19:31.22 UI34mYpn.net
>>203
day の値を追っかけてみたら元のfor、変更後のwhileともに同じ値で終了してたので頭抱えてたんですが
もう少し調べてみたら leap の値がズレてました
break の前の処理が1回分少なかったということで、落ち着いて考えれば当たり前の結論でした (;´Д`)
結局この処理の場合は元々のスクリプトや >>201 のように無限ループ使うのが一番シンプルに
書けるんだなーと確認して納得しました。先輩方ありがとう
205:login:Penguin
14/03/21 07:35:13.02 TlIvqwz8.net
>>205
URLリンク(www.amazon.co.jp)
206:login:Penguin
14/03/21 13:50:53.67 2joEzm1b.net
たけえわ!
こういう本こそ電子版にしてくれねえかなあ
207:login:Penguin
14/03/21 22:38:59.40 +P5ZN4Ej.net
レスありがとうございます
高いけどあるといえばあるんですね
どうしようかな
208:76
14/03/21 23:39:07.83 UPcdeELD.net
ブックオフで先週見たぞ
209:login:Penguin
15/01/24 09:55:38.14 gAuUge45.net
持ってたけどいつの間にか捨てていた
210:login:Penguin
15/01/24 12:11:48.77 4AXaMrRk.net
紙質が悪くてボロボロになった
211:login:Penguin
15/02/03 13:34:28.90 lZQLBw3l.net
Linuxも電子版出してほしいな(´・ω・`)
212:login:Penguin
16/08/29 23:40:58.70 W/IDgrhA.net
Gawk4.1.4出てたのか。
213:login:Penguin
16/11/09 18:03:36.84 XXe91GfC.net
なつい
214:login:Penguin
17/01/25 11:01:32.67 6VFENplc.net
長年親しんだテキストの遊園地がなくなってて非常に悲しい
どっかにアーカイブないっすか
215:login:Penguin
17/03/17 05:15:18.56 RjcJSjOQ.net
>>214
で、それはいつできるんだ?
できたらURL貼るのを忘れんなよ
216:login:Penguin
17/03/17 05:22:31.32 RjcJSjOQ.net
URLリンク(archive.org)
The AWK Programming Language
217:218
17/07/10 19:23:00.44 EatnUbnm.net
おばんです。
Linux環境の方にお願いします。
下記にあるblength()を試してもらえませんか?
URLリンク(www1.bbiq.jp)
よろしくお願いします。
218:デフォルトの名無しさん
17/07/11 08:37:02.92 7nEGt2Mb.net
なぜそれを Linux で? 何を知りたい?
219:218
17/07/11 08:56:48.21 WwRbMPQQ.net
HP製作者です。当方の環境はWindowsです。
Linux環境下で同じ実行結果を得ることができるのか、
知りたいのです。
よろしくお願いします。
220:login:Penguin
17/07/11 11:06:05.29 DDC9W9sY.net
いい機会だからLinux入れちゃえば
221:218
17/07/11 11:10:26.52 WwRbMPQQ.net
それもそうですね。
昔々REDHATだったか入れていました。
現在のおすすめのディストリビューションは何でしょうか?
222:login:Penguin
17/07/11 12:32:44.18 tm800Hl5.net
今はMS製のcygwinみたいのがあるのでは。Windows 10 Bashナントカ
223:218
17/07/11 12:42:28.77 b8V9VslP.net
Windows 10 Creators UpdateでUbuntu 16.04.1 これかな。
やってみます。ありがとうございました。
224:login:Penguin
17/11/21 02:37:01.57 PQah4bj0.net
jgawkをガウォークって読んでたマクロスヲタいない
225:login:Penguin
17/12/29 14:37:58.78 S/CsVkMC.net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
DCQTVO9E2N
226:login:Penguin
18/01/15 20:15:48.31 eZF7GqQ1.net
空の配列はどう作るの。
bashの declare -a var 相当。
227:login:Penguin
18/05/22 08:18:57.94 Czl6p0FW.net
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
V09DR
228:login:Penguin
18/08/06 01:01:52.57 lYVh6drB.net
Linux Beep Musicに感動したのでnokia2beeps.tclを移植してみた
URLリンク(pastebin.com)
nokia2beeps.awkとか保存し下記のページのコードを鳴らすやつ
URLリンク(nokia.nigelcoldwell.co.uk)
あと日本語の着メロも対応してる(コメント参照)
229:login:Penguin
18/12/26 23:28:57.46 41RDdYnE.net
awk だけど実行ファイルのフォーマットは ELF …いや、なんでもないです。
230:login:Penguin
19/02/17 10:18:47.85 tq2CmSlw.net
初心者ですが正規表現で半角をすべてというのはどうやるんでしたっけ
どっかで見たような気がするんですが
231:login:Penguin
19/02/17 14:29:57.54 kuwCjzfH.net
「半角」ってどう定義するのか難しいな
この辺読んでがんばれ
URLリンク(www.gnu.org)
232:login:Penguin
19/02/18 16:59:38.97 bs/RCYIZ.net
>>226
Awk の識別しは、最初っから空の配列だよ
いきなり使えば良い
233:login:Penguin
19/02/18 17:04:21.28 bs/RCYIZ.net
みなさんはgawk以外の処理系に移植できるか
とか、多少でも考えますか?私は気にしなくなりました。
他にも幾つか実装があるにはあるんですが、あんまり
活発じゃないし、言及もされないし、こだわりすぎると
不便でしょうがないから、気にしなくなりました。
けしからんでしょうか?
234:login:Penguin
19/02/18 20:36:34.78 uVw99/R9.net
GNU awkが事実上標準だからPOSIX準拠は気にしないな
235:login:Penguin
19/02/22 21:05:04.57 HUsgEyAs.net
AWK48!!
236:login:Penguin
19/04/17 15:19:28.33 j5OQY4r8.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環境が想定されるようになっています。
そして新たに名前空間が実装されています(詳細はマニュアルを参照とのこと)。
237:login:Penguin
19/04/17 17:39:45.30 oKn1+k+8.net
名前空間って、これまでのスクリプトが動かなくなるんだべか。
238:238
19/04/17 22:27:02.77 oKn1+k+8.net
さすがにそれは無かった。
$ gawk --version
GNU Awk 5.0.0, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)
:
$ gawk 'BEGIN{print awk::ARGC}'
1
$ gawk 'BEGIN{print ARGC}'
1
$
239:login:Penguin
19/12/04 08:39:54 EOFhhwOn.net
ageで行こう
240:login:Penguin
19/12/04 18:18:20.57 8Zd1xJ0mr
>>226
BEGIN {
for (i in a); #空配列作成
if (isarray(a)) print "aは配列である";
else print "aは配列でない";
}
241:login:Penguin
19/12/10 14:57:28.86 RI3PNloA.net
gawkでキーボードから一文字入力をしたいんですが、何かいい方法ないでしょうか?
stdinをgetlineするのではなく、キーを何か一つ押したときにそのコードを即座にgawkで受け取りたいんです。
具体的に何がしたいのかというと、BEGIN内部でスクリプトの動作を設定するパラメタをキーボードで指示したいんですが、
その支持を矢印キーでメニュー選択させたいんです。
ターミナルのエスケープシーケンスはVT100環境を想定しています。
何かヒントでもいいので一文字入力の方法を教えてください〜
gawkはこれ使ってます。
GNU Awk 4.2.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.1.2)
242:login:Penguin
19/12/10 15:04:17.01 RI3PNloA.net
追記
gawkを動かす環境はubuntu19.04で、主にWindowsからteratermでsshログインしての使用を考えています。
243:login:Penguin
19/12/10 19:53:29.48 /8T+qheh.net
>>241
awkじゃなきゃあかんの?
cursesでやればいいと思うけど
244:login:Penguin
19/12/11 00:25:34.40 ysC5v/gW.net
>>243
awkでやりたいんですよ。
cursesってawk用ライブラリありましたっけ?
自分アホなりに色々調べて、"read -n 1" をうまく使えば文字コード取れそうという所までは気がついたんですが、
これをawkスクリプト中で実行させて戻り値をawk変数に取り込む方法がわかりません。
どうすれば文字コードが取れるんでしょう?
245:login:Penguin
19/12/11 03:25:34.73 YST7j856.net
試さないで適当に書いてみるけど
一文字読みとる command 用意して
command | getline var
もしくは入力された文字を終了ステータスとして返す command で
var = system(command)
246:login:Penguin
19/12/11 09:57:26 JotyB0zR.net
試してから書きゃいいのに。
247:login:Penguin
19/12/11 17:11:40 w4fDC3xv.net
>>244
確かにそれはちゃんと機能する。しかし、矢印キーとなると話は別だ。
矢印キーは 3 バイトだから。
1 バイト読んで ESC だったらもっと読むということになる。
もちろん ESC じゃなかった場合のことも考える。
想定した処理が全部終わった後で、印字可能文字で 1 行で出力する
…というプログラムを C で書くということになるかなあ。
ところでエコーバックはどうする? 多分、こんなこともしたくなるんじゃないか。
URLリンク(qiita.com)
dialog とか使った方がいいんじゃないかな。
248:login:Penguin
19/12/12 01:58:28.69 +gdBEfoc.net
なんかすみません。
dialog & shell & awkでできるのはわかってるんですが、なんか負けたような気がしてw
なんとかshellのコマンドか標準で入っている外部コマンド & awkでできないもんかと思ったんです。
Linux ←→ Windowsのポータビリティを考えた場合、やはり1文字入力してそれを返すだけの小さなプログラムをCで作ってawkでそれを呼んで戻り値を得るのが一番手っ取り早いのかな、と思いつつあるところです。
でも、もう少し最初の路線で調べてみます。徒労に終わりそうな気はしますが。
249:247
19/12/12 16:49:42.78 Ks56aDFp.net
bash でも出来なくはないと思う。読むだけならいくらでも出来る。
しかし、「残さず食べる」ということを考えると read -n はちょっと…
なぜこれを考える必要があるかというと、食べ残しがあるとたとえばシェルの場合なら
それをコマンドラインだと思って読んでしまっだりする。
read -n は食べ残しが無かったら入力待ちになってしまうので適していないと思う。
他人に使わせるプログラムなら常に意識しておくべきことかもしれない。
そこで、まだ試してないならこんなことを試してみてほしい。
BEGIN {
cmd = "bash -c 'TMOUT=5 ; read -N 8 v ; echo \"$v\" ;'"
for( i = 0; i < 8; i++){
while ( 0 < ( cmd | getline)){
print "i=" i ", 0=[" $0 "]"
}
close( cmd)
}
}
得られたデータの長さが指定した長さに達していないならタイムアウトで終了した。
つまり、食べ残しは無いということになると思う。
ただし、改行の扱いがめんどくさい。
bash は read で読んだ改行をちゃんと送っているのだが getline が削除してしまう。
そして最後の改行は echo が加えたもので、read で読んだのではない。
awk の方で RS の値を変えることでめんどくささが減る可能性はある。
しかしやはり最終結果だけを 1 行で受け取るほうがいいかもしれない。
もっとも、入力元を共有しているから食べ残しが問題になるのであって
新たに端末エミュレータを起動してその上で実行するのなら問題にならない。
パイプが繋がらないから別の方法で結果を返す必要はあるが、メニューを出して
ユーザに選択させるという用途なら悪くない方法かもしれない。
250:login:Penguin
19/12/12 17:04:12.98 Ks56aDFp.net
そもそも「リターンキーで決定」とかなら食べ残しの心配は無いかな?
251:login:Penguin
19/12/13 04:10:04.34 For+FbwN.net
ありがとうございます。
-Nオプションでタイムアウト指定をするというのは目からウロコでした。
秒数を1にして、できるだけレスポンスのいい動きをさせようと思います。
矢印キーは3文字、Fnキーは5文字になるんですね。
そんなことも知りませんでした(汗
今日はawkにはpythonやperlにはあるord関数とchr関数が無いことを知って愕然としてました(笑)
文字を受け取ったはいいものの、文字コードをどうやって調べようかと悩んで行き着いた先のコードです。
笑ってやってください。
function ctblmake(ctbl) {
for (i = 0; i < 255; i++) {
ctbl = ctbl sprintf("%c", i);
}
return ctbl;
}
function ordhex(c) {
return sprintf("%02x", index(ctbl, c)-1);
}
BEGIN {
ctbl = "";
ctbl = ctblmake(ctbl);
print ordhex("?");
print ordhex("c");
print ordhex("b");
}
今日はもう寝ます
252:login:Penguin
19/12/13 09:49:46.45 WFJlAa92.net
perlとかでやれよ。
awkで簡単に出来ることをsed+grepで頑張る人達がクダスレ辺りに沢山いるが、それと同等だろう。
知恵の輪としては面白いけれど、成果には乏しいのでないか。
253:login:Penguin
19/12/13 13:58:14.66 +ky049vi.net
それを言っちゃあおしまいよ
254:login:Penguin
19/12/13 20:04:51.41 For+FbwN.net
なんか、返事するのがアホくさくなってきました。
さようなら。
255:login:Penguin
19/12/13 22:45:11.81 db+XusY3P
頭使って面白いなら、贅沢に時間使ってAWKでできること
何でもやるべき
時間がなきゃ252みたいになる
成果?笑わせる
256:login:Penguin
19/12/13 23:44:48.59 gNHNDwLS.net
awkはまずデータファイルありきで便利なものだしねえ。
趣味でどういう使い方しても勝手だけど。
257:login:Penguin
19/12/14 09:10:47.22 b3dqliHo.net
>>254
Perl を知っていながら awk でやろうってんだから、この程度のことは予想できたでしょう。
無視してりゃいいんだよ。
もっとも、真剣に取り組んでいるなら他の場所を探してもいいかもしれない。
でもここにも君を助けようとした者がいたことは覚えておいてほしい。
258:login:Penguin
19/12/14 09:34:23.87 b3dqliHo.net
あっ、某知恵袋はやめときなさい。あそこは知ったかぶりが多いから。
知らないなら回答しなきゃいいのにね。
259:login:Penguin
19/12/14 10:22:52.96 pIVSIbEK.net
>>258
Linuxオタが集う外国の掲示板当たりの良いのかもな
普通のLinuxユーザーなら、awkにこだわりすぎの変な奴だになって
相手にしてはいけない・からかってやれだろうからな。
260:login:Penguin
20/01/01 02:33:22.62 TglKmVwfj
>>259
海外の方が盛でしょうしね
261:login:Penguin
20/01/23 22:20:41.03 uGOVD2VtY
teratailというところでawkの質問・回答見てきたけど
あんまりおもしろくなかった
純粋にawkの質問というのが少ない
この板は貴重、保護するに値する
やる気をスポイルするの今度から禁止な
262:login:Penguin
20/02/04 15:23:00.78 n/qS2PYXS
英語は苦手ですが海外の掲示板に以下の質問を投稿しました
題:文字列から1文字ずつ抽出
AWK:文字列の先頭から末尾まで1文字ずつ取り出す場合
こんな風に記述されたものをよく見かけます
例:
function rev1(str, i, ret) {
for (i = 1; i <= length(str); i++)
ret = substr(str, i, 1) ret;
return ret;
}
私は、length()を使う必要はないと思っています
function rev2(str, ch, i, ret) {
while (ch = substr(str, ++i, 1))
ret = ch ret;
return ret;
}
これは動作しますが、間違っていませんか? と書きました
rev1():定番パターンですが、このケースでfor+length()は、
文字列を先頭から末尾まで全部読むにも拘わらず、
文字列全体の長さをあらかじめ調べるという
「頭の悪いアルゴリズム」で成り立っています
もう少しスマートな方法があるかもしれないと考えたものがrev2()です
回答いただいた外国の方との根源的な部分の共感はやはり難しいです
英語勉強しないと
263:login:Penguin
20/02/07 12:59:08.35 qmwRbkdNN
【日本】 コカコーラ、ラーコカコ 【イスラエル】
スレリンク(min板)
264:login:Penguin
21/02/19 05:12:44.08 m+sRJxZf.net
>>249
bashはreadline組み込まれてるので使って良いんじゃないかな?
あとライン毎にバッファしてるのが問題な気がするから、stdbuf cmdでcmdの参照してるstdlibをすり替えられて、一文字毎にflushする用に出来たりするがどうだろう
265:login:Penguin
21/12/29 17:13:13.59 2+qwQ610.net
busyboxのお陰でやっとwindowsでawkを使う気になれた
やっぱり良いツールだな
266:login:Penguin
22/01/10 19:56:17.76 CxUz26hu.net
winget install awkで入る(g)awkじゃいかんの?
今のところ困った事はない
267:login:Penguin
22/01/19 11:13:08.41 LY9w68e5.net
他のunixコマンドと連携して使いたかった
そこでいつもやる気なくしてた
268:login:Penguin
22/01/19 15:45:06.70 UQUeA/41.net
chocoやら乱立してたパッケマネがやっとMS公認の下で統合されたことだし、整合性も良くなってくんじゃないの
楽観的予測
269:login:Penguin
22/02/21 11:06:13.16 zLs4IRDg.net
awkwardな所にキュンとする
270:login:Penguin
22/05/27 17:18:00.89 zmLBeAi1.net
こんにちはPOSIX原理主義者です。何か質問ある?
271:login:Penguin
22/05/27 17:29:05.92 S4nvBfyf.net
今のところ使用上困ってることは無いんだけどせっかくなのでひとつ質問を
nawk, mawk, gawk どれが最もPOSIX準拠?
出来れば標準的なやつで修行しておきたいので
272:login:Penguin
22/05/28 01:45:13.16 6jvPj11k.net
>>271
全部POSIX準拠。ただし全部POSIXに準拠してないところがある。
273:login:Penguin
22/05/28 08:00:52.09 SKCSltUT.net
本来の文字列整形だけなら3つともあまり変わらん気がするけど
出過ぎた事を言わない方がいいんだろうな
274:login:Penguin
22/05/28 09:25:14.43 ystZjCC8.net
全部POSIX準拠だけど、Unicodeに対応してるのはgawkだけで
lengthの長さが違うとかいう違いがある。
そもそもPOSIXはCロケールしか考慮されてないので
Unicode非対応でもPOSIX準拠。
275:76
24/04/09 09:52:04.48 ixlG1zDd.net
URLリンク(twitter.com)
(deleted an unsolicited ad)
276:login:Penguin
24/05/25 21:05:41.79 Ie/rtxEg.net
>>265
busyboxで日本語つーかunicode対応してるのあんの?
見たことないけど
277:login:Penguin
24/06/01 05:58:32.78 7BYdneok.net
>>265
busyboxの貧相な実装に頼らなくても、そもそもwindowsはパッケージマネージャにマトモなawk(たぶんgawk)入ってなかったか?
winget install awk
とかそんな感じのコマンドで一発
あとpwshで定義できるfilterプロシージャがBEGIN/ENDとかまんまawk丸パクりな事に気付いてわろた
278:login:Penguin
24/08/06 16:09:59.96 4lHh0+8J.net
糖尿病薬全般に言えることだという
ネットリンチ被害者ぶってきてんのバレるのダサすぎることがショック
同じ事務所はヤクザだ半グレだ言われてたけど
残高0だからね
279:login:Penguin
24/08/06 16:10:25.92 BbpgX1YG.net
今のスクエニにロマサガはまだ4ワンチャンあるやろ
ちなみに勃起はしてないかくらいで
280:login:Penguin
24/08/06 16:11:32.40 BioQqbEs.net
ほんそれ
なにこれ
ほんそれ
なにこの物凄い低いと思うから残念
281:login:Penguin
24/08/06 16:19:42.23 1L38l11q.net
>>12
毒母マジこわっ
スパムおにぎりとマシュマロ食べ過ぎ
俺の戦力が結構上位になれてないよ
お父さん顔でレベル10は危険過ぎるな
282:login:Penguin
24/08/06 16:42:35.97 MLmJ4soY.net
>>135
トリドールうぜえ
はよ下げろや
暇だからウェザーニュース見てるだけやん
283:login:Penguin
24/08/06 16:59:47.00 a3ieKj03.net
ガーシーがきれてシステム会社のせいにするんだろうな
会社なんて何の証拠もない
でもそこで闘ってもシギーに部がある
クッソ地味やし絵も華がないのに煙草プロ意識のなさSOIやPIWのガラガラさ写真集バカ売れとかじゃないしやっぱそうなるわな
284:login:Penguin
24/08/06 17:01:56.76 mqunBzkJ.net
まず
自身のメンタル体力が落ちてるからアベガーがツボガーになったよ
スタッフなの分まで歌う」
285:login:Penguin
24/08/06 17:03:25.21 gdLPnAqK.net
結局落選してるやつはゴミ
286:login:Penguin
24/08/06 17:05:35.21 0jsWxcG5.net
>>5
ユーチューブよりかはニコ生は中抜きがえげつないの
でも壺がー言うてるの?
287:login:Penguin
24/08/06 17:06:07.30 Eeb4nzKR.net
リリース
周りも釣れてないならついてくやつがいるならそいつの勝手だろ
この契約内容やばくねーか
URLリンク(i.imgur.com)
288:login:Penguin
24/08/06 17:31:40.73 miOm6oCD.net
登録確定すると
それ見ると
本来の意味があるんだよてことまでバラされてる不条理なルールならそんな負けて
ソシャゲは好調な理由ある?
289:login:Penguin
24/08/06 17:39:20.94 BFtwQsGN.net
シートベルト緩めてた
290:login:Penguin
24/08/06 17:48:36.54 9AamTeXb.net
外人の要望もあるでしょ
291:login:Penguin
24/08/06 17:49:51.11 Ge+1W0+f.net
大奥はワンクール以上は
URLリンク(i.imgur.com)
292:login:Penguin
24/08/06 18:11:38.93 lVbHVUqA.net
「#どーみても時流からして在日っぽいけど
トリンドルの乳首見えてうれしいか?
パーマかけたところでガンガンに走るから
293:login:Penguin
24/08/06 18:42:15.72 K7r5OcAC.net
理由だけだからな
選挙の組織票と資金集めのために欲しくなってきた?
検査装置で、
みんなで一緒にゲーム規制食らったりするらしい
294:login:Penguin
24/08/06 18:44:09.21 blO2kfgi.net
金持ちだから
とりあえずホテルが
ズボンはいた感じが
これでマイナス10ポイントかな?
URLリンク(i.imgur.com)
295:login:Penguin
24/08/06 18:47:29.32 O7iGnbmx.net
しかし
子供の世話をしてても腹減ってる感じが続く
低血糖気味
ここがポイントだろうな
場所による世論操作バレたウジサンケイグループまだ懲りてねえんだな
296:login:Penguin
24/08/06 18:59:40.78 pdOhi2q3.net
>>180
「#やっぱこれタダなのー?」
「#毛を一本残らず永久に無くなった人ですし
297:login:Penguin
24/08/08 17:38:02.24 1USeT3ya.net
心臓発作なり脳梗塞とかなんだろうな
URLリンク(i.imgur.com)
298:login:Penguin
24/08/08 17:57:34.58 ssTH2jL6.net
脱毛器買った
URLリンク(p2vt.i9ew)
299:login:Penguin
24/08/09 16:22:06.44 XqlG8hqG.net
というか
アマチュア選手が居ない珍さんの趣味だから
適正な訳が違うから大丈夫なん?勘違いすぎる
300:login:Penguin
24/08/09 16:27:13.96 gXiZ4hli.net
>>41
生まれつきでどーしようかな
301:login:Penguin
24/08/09 16:39:02.55 XGEmOLdz.net
惚れた女には馬鹿にしてる時は、大量にあるみたいなので
302:login:Penguin
24/08/09 17:00:37.69 EGamJSmt.net
ソロだと思うが、評価はしてよいらしい
それは
303:login:Penguin
24/08/09 17:01:15.70 yiDLfMFk.net
>>89
若者じゃなくて今進行してる余裕なんて
使って
嘘はやめろよ
URLリンク(i.imgur.com)
304:login:Penguin
24/08/09 17:26:00.23 pUThvjXD.net
調べるにしても過酷なサバ番でデビューしてるのも優等生グループについた方がまだマトモだという
戒めの力もすごいからな
シティの時よりジェズスは自由主義だと言って勝ったのかよ
305:login:Penguin
24/08/09 18:10:12.35 vkSNZP4i.net
ニコルンみたいな事になったんだが、
306:login:Penguin
24/08/09 18:12:05.71 rJ/9exxp.net
大河よりいいよね大河なんかいつでもない感じだな
307:login:Penguin
24/08/09 18:18:38.74 hdAIxja2.net
572の追記
308:login:Penguin
24/08/09 18:20:06.71 W0xqMTng.net
>>189
粘着して10万だっけ?、藍上の世代みたいになったし
309:login:Penguin
24/08/09 18:46:53.18 nk2xVMjW.net
>>217
こどおばは大抵家事するから
310:login:Penguin
24/08/14 22:59:39.23 gSm3ajZp.net
ロナウド干されてるわけか
若者の家事ヤロウ!!!
URLリンク(kok.qu4)
311:login:Penguin
24/08/14 23:26:32.17 trR3Z/vB.net
5で死にますか
東スポの記事に思え
今年は英雄だな
312:login:Penguin
24/08/15 00:36:34.28 ZDexEDkW.net
ちなみに今回の選挙で選挙対策にどの番組になってる気がするな
とか考えて枠取ってるかと思ったらシギーのYouTubeやSNSのニュースって自分で守らんといけない
313:login:Penguin
24/08/16 00:03:17.80 zKVPhXCf.net
もうちょっと若くてもええやろ
企業の安定や株価の安定が視野に入ってきて底は脱した
次長課長、おぎやはぎ辺りとバカやってた時は100円くらいのボリュームじゃあなあ
それか料金を100円以内とか振り込みなだろ
314:login:Penguin
24/08/16 00:09:21.35 tf8idL16.net
どっちが勝つ
315:login:Penguin
24/08/16 00:29:09.90 z5/uEXKb.net
アメ株の高配当ETFが軒並み下げてる時の映像見せてコメント言わせたりもできるし。
何故か7/末→8/15頃→8/21(日) 09:43:57.55
今の外国人社長と創業家が不思議だ
URLリンク(i.imgur.com)
316:login:Penguin
24/08/16 00:40:51.46 PPgt/2Gg.net
普通に試合やるだけなら、明細は出して来い ホモ
これは立花の策略かな
317:login:Penguin
24/08/16 00:47:20.87 WLPhUlkZ.net
>>81
このスレもレスつくなこのスレやろ?あるか
予約でする方があり、トラックが悪いんやで
2.3キロ痩せたと思うことにしたいよね
318:login:Penguin
24/08/16 00:48:48.93 nWJUHeRo.net
ぜひ買って含んだままになった
319:login:Penguin
24/08/16 01:19:43.83 X8XEuPgn.net
横領してるのか
320:login:Penguin
24/08/16 01:28:19.00 fy3t1/Fl.net
お願い…
悪魔やんか
異常性格?
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
321:login:Penguin
24/08/16 01:28:56.54 WfbCdTo3.net
それなりの魅力を持ってるハイテク株どうしよう
どんなに怒るのか
322:login:Penguin
24/08/16 01:53:32.37 enR4GxRu.net
そこが過去のトラブルで一般的に大事だぞ
URLリンク(i.imgur.com)
323:login:Penguin
24/08/16 02:00:30.86 XT1bfuMG.net
実際ほとんどのハウスメーカークソだけどな
腹減ってるのがなあ
URLリンク(i.imgur.com)
324:login:Penguin
24/08/16 02:12:11.29 LgQC3NZR.net
>>122
女性キャストがなんともゾッコンの赤なのか
新興国のパワーバランスぶっ壊れそうで草
言わんまでもあったんだけど
時速120キロのところが天井でしょ?
325:login:Penguin
24/08/18 00:26:22.46 GYc/YbbZ.net
一応20代 :評価する57.9% 評価しない68.5%だった保守
保守
保守、リベラル、右、左みたいなアニメはあったのに
切り抜きに素材用の家購入にローン組んで
URLリンク(7s3.8v)
326:login:Penguin
24/08/18 02:01:32.21 Xzom+PNp.net
衆道の受け子ちゃんかしら
贔屓じゃなきゃ初回でつまんなきゃ即切るだろ
URLリンク(i.imgur.com)
327:login:Penguin
24/09/17 19:20:06.96 LJD5qXL3.net
Android で gawk を使うには?
328:login:Penguin
24/10/04 07:06:29.82 54MArR1R.net
>>327
termux
329:login:Penguin
24/10/04 08:00:34.96 q7G6FtQ8.net
>>328
> termux
以外で、Android で gawk を使うには?
330:login:Penguin
24/10/06 19:41:39.73 k8baQSUl.net
gawkは知らんがnawkならAndroid 9には元々入ってるので適当なテキスト端末アプリから
/system/bin/awk --version
awk version 20121220
システムディレクトリを検索するとawk使ったスクリプトがちらほら
331:login:Penguin
24/10/06 20:05:36.92 BZCoeiV1.net
外部から変なもの入れたくないのか?
しかしandroidのbinにはviもedもないので…
謎のshはあるのでそれで頑張りましょう
332:login:Penguin
24/10/06 22:10:11.04 76gcabqL.net
>>330
> nawkならAndroid 9には元々入ってる
昨日ごちょごちょいじっていて、その事に気付いた。ありがとう。
>>331
termux は以前使用し、安定しないイメージがあるので、あまり使いたくない。Android OSの改版とともに、できたことができなくなったり。
333:login:Penguin
25/07/19 22:19:49.65 0DcMYQD1.net
awk と sed はとっつきにくいけど、
慣れてくると離れられないね…
334:login:Penguin
25/07/22 12:47:20.05 x3RSJ8yB.net
awkはまだわかるがsedがとっつきにくいとは
335:login:Penguin
25/07/23 09:57:28.87 29eAvk34.net
sed はコマンドが1文字だから、とっつきにくいでしょ。
336:login:Penguin
25/07/24 14:54:07.21 TgYZjX0v.net
覚えることが少ないのに簡単やろsedの方が
正規表現はawkもsedも共通やし
337:login:Penguin
25/07/27 20:53:48.94 Ms9gZJNe.net
まあsedでできることは全てawkでできるからな
その狭い適用範囲の処理もawkで書くとスクリプトが冗長になるからみんなsedを使ってるわけで
338:login:Penguin
25/08/04 12:10:37.58 qLMpBubT.net
>>330
同じnawkでもDebianでは
$ awk -W version
だからAndroidでは少し違うんだな。勉強になった
339:login:Penguin
26/02/02 10:50:45.48 HoeJ7Jsun
qf/cam/adsb.out高市早苗か゛馬脚が現わしてきたなてめえの馬面並にクソ汚いクソ航空騷音まみれの日本のと゛こが美しいんた゛か
クソ羽田にクソ成田にと拡張しまくって海に囲まれた日本て゛わさ゛わさ゛陸域飛ばしまくって莫大な温室効果ガスまき散らして氣侯変動
災害連發させてるテ口國家か゛美しいとか顔面に滲み出るほど脳みそに虫湧きすき゛だろ太陽光パネル云々ほざく前にクソ航空機全廃か゛先
EVシフトのために海外て゛はカ゛ソリン270円/Lか゛相場た゛がクソ安い日本のガソリン価格をさらに引き下げるならカ゛ソリン車数萬台分の
温室効果ガスを━回の離陸て゛まき散らすクソ航空機に年100兆圓課税してからほざくのか゛筋
氣象庁か゛気候変動させてるた゛のほさ゛いてたハ゛カか゛いたが気候変動させたのはクソ公明党であり國土破壊省だろ爆弾もなくナイフ数本で
こいつらの頭でも討ち取れるとて゛も思ったのか山上大先生のような知的能カ者じゃなくても今と゛きちょっと調へ゛りゃ結構なことできるだろうに
苦笑にすら値しねえクマさん殺すのやめてJALた゛のANAだの國土破壊省た゛のテロリストを皆殺しにするのか゛正義
航空機連絡先情報 noise.web.fc2.com
340:login:Penguin
26/02/24 22:28:58.36 plJovSz8.net
gawk 5.4.0 が Slackware に来た。
ja の gawk.mo が廃止になったそう。
URLリンク(cgit.git.savannah.gnu.org) -> 17