腐っても鯛? 騏も老いては駑馬に劣る?
三人の碩学が生み出したスクリプト言語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
■ このスレッドは過去ログ倉庫に格納されています
2007/02/23(金) 23:55:42
706本田
2012/08/05(日) 07:21:28.03 Awk++
http://awk.info/?doc/dsl/awkplusplus.html
OO in AWK++
The awk++ language provides object oriented programming for AWK that includes:
classes
class properties (persistent object variables)
methods
inheritance, including multiple inheritance
http://lawker.googlecode.com/svn/fridge/lib/bash/awk++/version21/awkpp21.zip
http://awk.info/?doc/dsl/awkplusplus.html
OO in AWK++
The awk++ language provides object oriented programming for AWK that includes:
classes
class properties (persistent object variables)
methods
inheritance, including multiple inheritance
http://lawker.googlecode.com/svn/fridge/lib/bash/awk++/version21/awkpp21.zip
707デフォルトの名無しさん
2012/08/05(日) 09:56:26.63 デバッグ大変過ぎて死ぬる
$ cat witch.awkpp
class Witch {
var spell
method new() { spell = "mahalic mahalita" }
method perform() { print spell }
}
class Samantha : Witch {
method perform() { print "twitch" }
}
BEGIN {
# wife = Witch.new() エラー要因行
wife = Samantha.new()
wife.perform()
}
$ gawk -f awkpp -r witch.awkpp
gawk: -:10: () エラー要因行
gawk: -:10: ^ syntax error
gawk: -:10: () エラー要因行
gawk: -:10: ^ 表現の char '?' は不正です。
$ cat witch.awkpp
class Witch {
var spell
method new() { spell = "mahalic mahalita" }
method perform() { print spell }
}
class Samantha : Witch {
method perform() { print "twitch" }
}
BEGIN {
# wife = Witch.new() エラー要因行
wife = Samantha.new()
wife.perform()
}
$ gawk -f awkpp -r witch.awkpp
gawk: -:10: () エラー要因行
gawk: -:10: ^ syntax error
gawk: -:10: () エラー要因行
gawk: -:10: ^ 表現の char '?' は不正です。
708デフォルトの名無しさん
2012/08/22(水) 00:09:49.86 size: 656 byte, supports -o -v option. Array A and B can be the same (NEW)
function xagrep( o, re, A, B, this, a, i,k ){
k=0;B[0]=A[0];if(o~"-v"){for(i=1;i<=A[0];i++){if(!match(A[i],re)) B[k+=1]=A[i];}B[0]=k;return k};
if(o~"-o"){B[B[0]+1]=0;for(i=1;i<=A[0];i++){a=A[i];if(i==k){i=i-B[B[0]+1]+1;B[B[0]+1]=k;k=B[0]+2;
while(i<=B[B[0]+1]){B[i++]=B[k];delete B[k++];}i=B[B[0]+1];k=i;B[B[0]+1]=0;}while(match(a,re)){
if(i>k){B[k+=1]=substr(a,RSTART,RLENGTH);}else{B[B[0]+1+(B[B[0]+1]+=1)]=substr(a,RSTART,RLENGTH);
k++}a=substr(a,RSTART+RLENGTH)}}if(i<k){i=k-i;k=B[0]+1;B[0]=i+B[B[0]+1];while(i<B[0])B[i+=1]=B[k+=1];
while(i<k)delete B[i+=1];}return B[0]}for(i=1;i<=A[0];i++){if(match(A[i],re))B[k+=1]=A[i];}B[0]=k;return k;
}
これ以上削れるところ無いかな?
高速化+サイズ優先で、変数はできるだけ使う数を少なくとの条件で
function xagrep( o, re, A, B, this, a, i,k ){
k=0;B[0]=A[0];if(o~"-v"){for(i=1;i<=A[0];i++){if(!match(A[i],re)) B[k+=1]=A[i];}B[0]=k;return k};
if(o~"-o"){B[B[0]+1]=0;for(i=1;i<=A[0];i++){a=A[i];if(i==k){i=i-B[B[0]+1]+1;B[B[0]+1]=k;k=B[0]+2;
while(i<=B[B[0]+1]){B[i++]=B[k];delete B[k++];}i=B[B[0]+1];k=i;B[B[0]+1]=0;}while(match(a,re)){
if(i>k){B[k+=1]=substr(a,RSTART,RLENGTH);}else{B[B[0]+1+(B[B[0]+1]+=1)]=substr(a,RSTART,RLENGTH);
k++}a=substr(a,RSTART+RLENGTH)}}if(i<k){i=k-i;k=B[0]+1;B[0]=i+B[B[0]+1];while(i<B[0])B[i+=1]=B[k+=1];
while(i<k)delete B[i+=1];}return B[0]}for(i=1;i<=A[0];i++){if(match(A[i],re))B[k+=1]=A[i];}B[0]=k;return k;
}
これ以上削れるところ無いかな?
高速化+サイズ優先で、変数はできるだけ使う数を少なくとの条件で
709デフォルトの名無しさん
2012/08/22(水) 09:51:11.01 >>708
その3つの条件の優先度がわからんな。
結構同じ部分式があるので変数に入れた方が変数は増えるけど短くなるし
場合によっては速度も速いとかありそうだけどどうなん?
例えばB[0]は特別な用途っぽいけどxとか1文字変数にしてreturnの直前に
書き戻した方が文字数は稼げる。
あと細かいがhoge+=1より++hogeの方が1文字短いとか、いらない「;」が
残ってるとか詰めが甘いところがまだあるね。
その3つの条件の優先度がわからんな。
結構同じ部分式があるので変数に入れた方が変数は増えるけど短くなるし
場合によっては速度も速いとかありそうだけどどうなん?
例えばB[0]は特別な用途っぽいけどxとか1文字変数にしてreturnの直前に
書き戻した方が文字数は稼げる。
あと細かいがhoge+=1より++hogeの方が1文字短いとか、いらない「;」が
残ってるとか詰めが甘いところがまだあるね。
710デフォルトの名無しさん
2012/09/30(日) 22:45:00.64 以下のようなデータの処理について質問いいでしょうか。
$1に経過時間(時刻)、$2に「速度」があれば$3の数値は速度を、$2$3に
「up a」「down a」などとあればその時刻での行動を示します。
このデータからup、downの場所を求めたいと思います。
つまり、下の例で移動開始からの距離3でup a、距離3.5でup b、という具合です。
経過時間と速度から場所を計算するだけですが。速度を変更するタイミング・
回数は不定、速度データと行動データはともに経過時間順に記録されています。
速度変更をどう扱えばいいのか、ちょっと頭が回りません。
---元データ例---
0 速度 10
50 速度 20
200 速度 25
30 up a
35 up b
40 down a
40 down b
50 up a
70 down a
200 up c
250 down c
---処理後---
3 up a
3.5 up b
4 down a
4 down b
5 up a
6 down a
12.5 up c
14.5 down c
$1に経過時間(時刻)、$2に「速度」があれば$3の数値は速度を、$2$3に
「up a」「down a」などとあればその時刻での行動を示します。
このデータからup、downの場所を求めたいと思います。
つまり、下の例で移動開始からの距離3でup a、距離3.5でup b、という具合です。
経過時間と速度から場所を計算するだけですが。速度を変更するタイミング・
回数は不定、速度データと行動データはともに経過時間順に記録されています。
速度変更をどう扱えばいいのか、ちょっと頭が回りません。
---元データ例---
0 速度 10
50 速度 20
200 速度 25
30 up a
35 up b
40 down a
40 down b
50 up a
70 down a
200 up c
250 down c
---処理後---
3 up a
3.5 up b
4 down a
4 down b
5 up a
6 down a
12.5 up c
14.5 down c
711デフォルトの名無しさん
2012/10/01(月) 11:28:30.42 疑問を提示。
$1が常に時刻で$2が速度のときの$3が速度なら、
30 up aのときに30 * 10で300 up aになるんじゃないだろうか。
同じように、70 down aのときに50 * 10 + (70 - 50) * 20で900 down aになるんじゃないだろうか。
$3が速度(単位時間当たりの移動量)ではなく単位移動量当たりの所要時間なのであれば、
30 up aで30 / 10 = 3、70 down aで50 / 10 + (70 - 50) / 20 = 6になるんだけどね。
$1が常に時刻で$2が速度のときの$3が速度なら、
30 up aのときに30 * 10で300 up aになるんじゃないだろうか。
同じように、70 down aのときに50 * 10 + (70 - 50) * 20で900 down aになるんじゃないだろうか。
$3が速度(単位時間当たりの移動量)ではなく単位移動量当たりの所要時間なのであれば、
30 up aで30 / 10 = 3、70 down aで50 / 10 + (70 - 50) / 20 = 6になるんだけどね。
712デフォルトの名無しさん
2012/10/01(月) 13:21:34.21 実装してみた。速度が途中に出てきてもいいようにposを毎回計算するから効率悪いけど。
--
BEGIN {
sCount = 0;
}
$2 == "speed" {
sTime[sCount] = $1;
sSpeed[sCount] = $3;
++sCount;
next;
}
{
pos = 0;
for (ic = 1; ic < sCount; ++ic) {
if (sTime[ic] > $1) break;
pos += (sTime[ic] - sTime[ic - 1]) / sSpeed[ic - 1];
}
pos += ($1 - sTime[ic - 1]) / sSpeed[ic - 1];
print pos, $2, $3;
}
--
BEGIN {
sCount = 0;
}
$2 == "speed" {
sTime[sCount] = $1;
sSpeed[sCount] = $3;
++sCount;
next;
}
{
pos = 0;
for (ic = 1; ic < sCount; ++ic) {
if (sTime[ic] > $1) break;
pos += (sTime[ic] - sTime[ic - 1]) / sSpeed[ic - 1];
}
pos += ($1 - sTime[ic - 1]) / sSpeed[ic - 1];
print pos, $2, $3;
}
713デフォルトの名無しさん
2012/10/01(月) 20:30:33.48714デフォルトの名無しさん
2012/12/13(木) 11:40:43.98 awkにかわる同等のものあります?
715デフォルトの名無しさん
2012/12/13(木) 13:08:08.26 python
716デフォルトの名無しさん
2012/12/13(木) 13:13:55.85 >>715
awkみたいに使い勝手いいのかな?
awkみたいに使い勝手いいのかな?
717デフォルトの名無しさん
2012/12/13(木) 13:18:24.65 良いですよ
718デフォルトの名無しさん
2012/12/13(木) 13:24:31.23 >>717
ありがとす。勉強してみます
ありがとす。勉強してみます
719デフォルトの名無しさん
2012/12/13(木) 14:45:25.45 はい
720デフォルトの名無しさん
2013/02/06(水) 03:49:18.86 “任意の記号”を含んだシェル変数をawkに渡すことは可能ですか?たとえば
[user@localhost ~]$ var='hoge'
[user@localhost ~]$ echo "hoge" | awk -v var="$var" '
$0 ~ var {print var}
END {print var}
'
hoge
hoge
ここで、varに$を含ませると
[user@localhost ~]$ var='hoge$fuga'
[user@localhost ~]$ echo "hoge" | awk -v var="$var" '
$0 ~ var {print var}
END {print var}
'
hoge$fuga
とうまくマッチしませんでした。var自体は渡されているはずですが、何が原因でしょうか?
[user@localhost ~]$ var='hoge'
[user@localhost ~]$ echo "hoge" | awk -v var="$var" '
$0 ~ var {print var}
END {print var}
'
hoge
hoge
ここで、varに$を含ませると
[user@localhost ~]$ var='hoge$fuga'
[user@localhost ~]$ echo "hoge" | awk -v var="$var" '
$0 ~ var {print var}
END {print var}
'
hoge$fuga
とうまくマッチしませんでした。var自体は渡されているはずですが、何が原因でしょうか?
721デフォルトの名無しさん
2013/02/06(水) 11:23:41.42 >>720
いちぎょうめのひだりがわの var は、ひょうかのさいに
せいきひょうげんへのかたへんかんがおこなわれる。
$0 ~ /hoge$fuga/ {print "hoge$fuga"}
END {print "hoge$fuga"}
めたもじとなってしまうものは、じぜんあるいはこーどのなかで
えすけーぷするひつようがある。
いちぎょうめのひだりがわの var は、ひょうかのさいに
せいきひょうげんへのかたへんかんがおこなわれる。
$0 ~ /hoge$fuga/ {print "hoge$fuga"}
END {print "hoge$fuga"}
めたもじとなってしまうものは、じぜんあるいはこーどのなかで
えすけーぷするひつようがある。
722デフォルトの名無しさん
2013/02/06(水) 11:29:22.31 ~(チルダ)の右辺は正規表現として解釈されるから、"hoge" ~ /hoge$fuga/ でマッチするわけがない。
逆に寧ろ、"hoge$fuga" ~ /hoge/ ならマッチする。
逆に寧ろ、"hoge$fuga" ~ /hoge/ ならマッチする。
723デフォルトの名無しさん
2013/02/06(水) 11:33:09.61 >>720
>721も>722もどちらも原因。やりたいことをよく整理しよう。
>721も>722もどちらも原因。やりたいことをよく整理しよう。
724720
2013/02/06(水) 15:09:21.72 すいません、echo "hoge"ではなくecho "$var"でした。
ただ、結果は>>720と同じです。
要は入力ファイル内の「メタ文字込みの任意の文字列」を、別の「メタ文字と改行込みの任意の文字列」で置換する、
というのをメタ文字のエスケープ等の面倒な処理をせずにサクッとやりたいのですが、できますか?
ただ、結果は>>720と同じです。
要は入力ファイル内の「メタ文字込みの任意の文字列」を、別の「メタ文字と改行込みの任意の文字列」で置換する、
というのをメタ文字のエスケープ等の面倒な処理をせずにサクッとやりたいのですが、できますか?
725デフォルトの名無しさん
2013/02/07(木) 05:01:43.19 ムリ
予め「メタ文字と言っても $ しか出てこない」とか判ってるなら大したこと無いけど
一般化すればするほど面倒になる
予め「メタ文字と言っても $ しか出てこない」とか判ってるなら大したこと無いけど
一般化すればするほど面倒になる
726720
2013/02/07(木) 22:14:56.21 >>725
やはりそうですか。
今までこういった処理はsedでしこしこエスケープしてやってたんですが、いい加減面倒になったので、
たとえばfgrepみたいに正規表現をオフにして処理する方法はないかと探しているんですが、
awkでは無理ですか・・・。
やはりそうですか。
今までこういった処理はsedでしこしこエスケープしてやってたんですが、いい加減面倒になったので、
たとえばfgrepみたいに正規表現をオフにして処理する方法はないかと探しているんですが、
awkでは無理ですか・・・。
727デフォルトの名無しさん
2013/02/08(金) 11:20:14.98728デフォルトの名無しさん
2013/02/08(金) 19:27:47.04 >>726
fgrepなら index()関数じゃないの?
fgrepなら index()関数じゃないの?
729720
2013/02/09(土) 15:32:27.55 >>727
>単に一致なら正規表現なんか使わずに比較すればいいじゃん。
意味が分からないんですが、awk上の話ですよね?
>>728
index()の引数は文字列だから、これをうまく使えば目的の処理ができる・・・のかな?
でもなんかawkでごちょごちょやるより、メタ文字をエスケープする前処理をかますなり
何なりしたほうが素直な気がしてきた・・・。たとえばこんな感じで
$ var='hoge$fuga'
$ var2=$( echo "$var" | sed 's/\$/\\\\$/g' ) ←エスケープ処理
$ echo "$var" | awk -v var="$var2" '
$0 ~ var {print var}
END {print var}
'
hoge\$fuga
hoge\$fuga
>単に一致なら正規表現なんか使わずに比較すればいいじゃん。
意味が分からないんですが、awk上の話ですよね?
>>728
index()の引数は文字列だから、これをうまく使えば目的の処理ができる・・・のかな?
でもなんかawkでごちょごちょやるより、メタ文字をエスケープする前処理をかますなり
何なりしたほうが素直な気がしてきた・・・。たとえばこんな感じで
$ var='hoge$fuga'
$ var2=$( echo "$var" | sed 's/\$/\\\\$/g' ) ←エスケープ処理
$ echo "$var" | awk -v var="$var2" '
$0 ~ var {print var}
END {print var}
'
hoge\$fuga
hoge\$fuga
730デフォルトの名無しさん
2013/02/09(土) 17:49:52.25 /bin/shでごちょごちょやるのが好みなら、awkもfgrepも使わず、case文でやりゃいいんじゃないの。
731デフォルトの名無しさん
2013/02/09(土) 21:34:09.39 >>729
文字列の比較は等号でできるって認識はないの?
文字列の比較は等号でできるって認識はないの?
732デフォルトの名無しさん
2013/02/10(日) 14:31:49.57 >729
いや、その方法でも結局 ' はエスケープが必要でしょ。
ダイレクトにシェル変数に入れる方法か、
ファイルなどに吐き出しておく方法の方が安定。
まぁそれでも改行とか制御文字入れられるともにょる場合があるけどな。
いや、その方法でも結局 ' はエスケープが必要でしょ。
ダイレクトにシェル変数に入れる方法か、
ファイルなどに吐き出しておく方法の方が安定。
まぁそれでも改行とか制御文字入れられるともにょる場合があるけどな。
733デフォルトの名無しさん
2013/02/11(月) 20:15:01.17 そこまでめんどくさくなったらperlとかrubyとか使った方が楽だぞw
734デフォルトの名無しさん
2013/02/11(月) 22:46:25.57 何で gawk -f とか使わずワンライナーに拘るのかねぇ
735デフォルトの名無しさん
2013/02/12(火) 22:00:38.07736デフォルトの名無しさん
2013/03/11(月) 10:05:12.56 #
# text converter ( Mac to MS-DOS on Windos/MS-DOS machine)
# convert CR to CR+LF
#
BEGIN{ RS = "\r" }
{ print }
# text converter ( Mac to MS-DOS on Windos/MS-DOS machine)
# convert CR to CR+LF
#
BEGIN{ RS = "\r" }
{ print }
737デフォルトの名無しさん
2013/03/15(金) 08:05:25.28 #
# Line(行数)を数える
#
END { FNR }
# Line(行数)を数える
#
END { FNR }
738デフォルトの名無しさん
2013/03/20(水) 19:07:17.00 # text to html converter
# usage: awk -f txt2htm.awk infile1.txt > outfile2.html
BEGIN{
print("<html>"); print("<head>")
print("<titile> My favorite URLs </titile>")
print("</head>"); print("<h1> </h1>"); print("<body>");
}
/^[:space:]*http/ { print "<A HREF=\""$1"\">"$1"</A><BR>"}
END{
print("</body>")
print("</html>")
}
# usage: awk -f txt2htm.awk infile1.txt > outfile2.html
BEGIN{
print("<html>"); print("<head>")
print("<titile> My favorite URLs </titile>")
print("</head>"); print("<h1> </h1>"); print("<body>");
}
/^[:space:]*http/ { print "<A HREF=\""$1"\">"$1"</A><BR>"}
END{
print("</body>")
print("</html>")
}
739UNIX(LF) to DOS(CR+LF) conversion
2013/03/21(木) 21:15:00.86 awk 1 infile1 > outfile2.txt
740デフォルトの名無しさん
2013/03/21(木) 22:10:08.07 # awk -f add.awk
BEGIN {
s1 = "323524855"
s2 = "4972560"
reverse(a2, s2)
size = reverse(a1, s1) # s1 > s2
carry = 0
for(k = 1; k <= size; k++) { # s1 > s2
d = a1[k] + a2[k] + carry
if(d >= 10) {
e[k] = d - 10
carry = 1
} else {
e[k] = d
carry = 0
}
}
if(carry == 1) {
e[k] = 1
size = k
}
g = produce_string(e, size)
printf("%s + %s = %s\n", s1, s2, g)
printf("%f\n", s1 + s2)
exit
}
BEGIN {
s1 = "323524855"
s2 = "4972560"
reverse(a2, s2)
size = reverse(a1, s1) # s1 > s2
carry = 0
for(k = 1; k <= size; k++) { # s1 > s2
d = a1[k] + a2[k] + carry
if(d >= 10) {
e[k] = d - 10
carry = 1
} else {
e[k] = d
carry = 0
}
}
if(carry == 1) {
e[k] = 1
size = k
}
g = produce_string(e, size)
printf("%s + %s = %s\n", s1, s2, g)
printf("%f\n", s1 + s2)
exit
}
741デフォルトの名無しさん
2013/03/21(木) 22:11:11.39 # >>740のつづき
function reverse(a, s, k, i) {
k = 1;
size = length(s)
for(i = size; i >= 1; i--) {
a[k++] = substr(s, i, 1)
}
return size
}
function produce_string(a, size, i) {
g = ""
for(i = size; i >= 1; i--) {
g = g a[i]
}
return g
}
function reverse(a, s, k, i) {
k = 1;
size = length(s)
for(i = size; i >= 1; i--) {
a[k++] = substr(s, i, 1)
}
return size
}
function produce_string(a, size, i) {
g = ""
for(i = size; i >= 1; i--) {
g = g a[i]
}
return g
}
742デフォルトの名無しさん
2013/03/21(木) 22:12:57.08 function produce_string(a, size, g, i) {
743grepをawkで
2013/03/22(金) 13:32:02.74 # usage: awk -f grep.awk char1 file1 file2
BEGIN{
pattern = ARGV[1]
ARGV[1] = ""
}
$0 ~ pattern {print($0" File name=" FILENAME)}
BEGIN{
pattern = ARGV[1]
ARGV[1] = ""
}
$0 ~ pattern {print($0" File name=" FILENAME)}
744デフォルトの名無しさん
2013/11/30(土) 12:16:25.95 $ echo 10 20 30 | awk '{for(i=0;i<4;)print _$++i}'
10
20
30
_$++iでも$++iでもどちらでもいけるのですが、アンダースコアが付いて何故大丈夫なのでしょうか?
10
20
30
_$++iでも$++iでもどちらでもいけるのですが、アンダースコアが付いて何故大丈夫なのでしょうか?
745デフォルトの名無しさん
2013/11/30(土) 16:04:55.55 すいません、わかりました
空の変数_と$++iの結果が一緒になってただけなんですね
空の変数_と$++iの結果が一緒になってただけなんですね
746デフォルトの名無しさん
2013/11/30(土) 20:37:58.81 単に式を並べると文字列連結になる、の罠か
747デフォルトの名無しさん
2014/04/02(水) 00:10:13.15ID:T3/5Epfc 保守
てか半年近く書き込みが無かったか
てか半年近く書き込みが無かったか
748デフォルトの名無しさん
2014/04/14(月) 22:41:42.89ID:5r697USd 4.1.1ってもうリリースされたの?
749デフォルトの名無しさん
2014/04/19(土) 13:45:38.45ID:Db2IzPol とあるgawkスクリプトの先頭で
{last_hoge=hoge; hoge=$ 3}
ってやってるんだけど、
hoge=$ 3はhoge=$3の間違い? それともこういう記法がある?
{last_hoge=hoge; hoge=$ 3}
ってやってるんだけど、
hoge=$ 3はhoge=$3の間違い? それともこういう記法がある?
750デフォルトの名無しさん
2014/04/19(土) 14:56:08.53ID:A73fEYrr >>749
$ は演算子だから、a=b+1をa = b + 1と書くようなものかな。
$ は演算子だから、a=b+1をa = b + 1と書くようなものかな。
751デフォルトの名無しさん
2014/04/19(土) 21:10:32.64ID:Db2IzPol ええー 演算子だったのかあ。衝撃の事実
752デフォルトの名無しさん
2014/04/20(日) 12:36:45.70ID:SQaIR8ej 演算子だから、変数でもいいよ。
753デフォルトの名無しさん
2014/04/20(日) 14:34:12.09ID:YSeiuWKu 式が書けるね。
$ は一番優先順位が高いから、かっこで括らにゃいかんが。
$ は一番優先順位が高いから、かっこで括らにゃいかんが。
754デフォルトの名無しさん
2014/04/20(日) 15:12:13.25ID:k3tDznaJ 今はじめて知った。haskellの$は演算子だって知ってたけど、awkでも演算子だったんだね。
755デフォルトの名無しさん
2014/10/14(火) 13:37:28.35ID:cBz5RbAX そして半年近く書き込みが無かった
756デフォルトの名無しさん
2014/10/15(水) 03:28:03.90ID:SS4U/DMU いやawkスレなんて普段はそんなに話題ないだろ
757デフォルトの名無しさん
2014/10/21(火) 15:46:10.36ID:TQsAGJgk 質問させてください
今ディレクトリ内のファイルの名称とサイズのリストを作りたいと思っています
コマンドとしてはls -lを実行していますがこれをさらにawkにパイプしています
ただしファイル名にスペースが含まれているため以下のような苦肉の策をとっておりますが
ls -l | awk '{print $5 "\t" $9$10$11$12$13$14$15$16$17$18$19}'
10個以上で区切られてる可能性もあるため根本的な対応をしたいと考えていますが
よい案はありますでしょうか
今ディレクトリ内のファイルの名称とサイズのリストを作りたいと思っています
コマンドとしてはls -lを実行していますがこれをさらにawkにパイプしています
ただしファイル名にスペースが含まれているため以下のような苦肉の策をとっておりますが
ls -l | awk '{print $5 "\t" $9$10$11$12$13$14$15$16$17$18$19}'
10個以上で区切られてる可能性もあるため根本的な対応をしたいと考えていますが
よい案はありますでしょうか
758デフォルトの名無しさん
2014/10/21(火) 17:25:55.68ID:EsuQiv22 # ファイル名に「"」が含まれていたら知らね。
ls -Ql |awk '{split($0, foo, "\x22"); print $5 "\t" foo[2]}'
ls -Ql |awk '{split($0, foo, "\x22"); print $5 "\t" foo[2]}'
759デフォルトの名無しさん
2014/10/21(火) 23:41:50.65ID:stXOK2Vv Qオプションは勉強になった
ls -l|awk '{s=$5;for(i=1;i<9;i++)$i="";print s"\t"$0}'
ls -l|awk '{s=$5;for(i=1;i<9;i++)$i="";print s"\t"$0}'
2014/12/13(土) 17:07:55.12ID:8LbgKkKk
¥034 は ” (半角)
¥035 は # (半角) でおkですか?
¥035 は # (半角) でおkですか?
2014/12/13(土) 18:17:16.35ID:FQOeA8KF
>>760
いいえ違います。
いいえ違います。
762デフォルトの名無しさん
2014/12/14(日) 00:00:31.34ID:7YfznIJB どちらも非可読文字ですね。そしてそうなるとスレ違い。
awkと絡むのなら具体的にどうぞ。
awkと絡むのなら具体的にどうぞ。
763デフォルトの名無しさん
2015/02/03(火) 10:36:52.13ID:Dvc0nyMp Terastationのファイル・ホルダ名に使うとファイルレプリケーションでエラーが起こる文字があって、それを変換するバッチを生成する時にこのマイナー言語が大活躍した。
約80万件のファイルホルダ名から抽出するのに10分程度だった。
約80万件のファイルホルダ名から抽出するのに10分程度だった。
764デフォルトの名無しさん
2015/05/26(火) 00:18:03.33ID:Y5HiR/XE Gawk4.1.2が出たなあ、と思ってたらすぐ4.1.3が出た。
素人には違いがあまり分からんのだが。
素人には違いがあまり分からんのだが。
765デフォルトの名無しさん
2015/05/31(日) 09:20:55.82ID:PB6Yeih1766デフォルトの名無しさん
2015/06/03(水) 20:45:34.22ID:vBAc8MUN >>765
買ってきた。まだ最初の方と最後の方を眺めただけだけど。
ページiv(「はじめに」)でawkの表記について「本書内では、いずれの
場合もすべて小文字のawkという表現に統一しております」と
あるのに、書名がAWK。
巻末のリファレンスで気になったところ。
演算子の優先順位に触れていない、フィールド演算子が
「特別な意味を持つな変数」の中に入れられている。
参考書や文献がないけど、今時は「ネットでググれ」かな。
買ってきた。まだ最初の方と最後の方を眺めただけだけど。
ページiv(「はじめに」)でawkの表記について「本書内では、いずれの
場合もすべて小文字のawkという表現に統一しております」と
あるのに、書名がAWK。
巻末のリファレンスで気になったところ。
演算子の優先順位に触れていない、フィールド演算子が
「特別な意味を持つな変数」の中に入れられている。
参考書や文献がないけど、今時は「ネットでググれ」かな。
767デフォルトの名無しさん
2015/07/06(月) 22:02:56.12ID:Wnwr3Nh9 Mono: Playback -9707 [5%] [-97.07dB] [on]
上の行からパーセントを除いた数字(上の例だと5)を取得したいのですがどのようにしたらよいでしょうか?
パーセントの値は0から100の整数だと思います
上の行からパーセントを除いた数字(上の例だと5)を取得したいのですがどのようにしたらよいでしょうか?
パーセントの値は0から100の整数だと思います
768デフォルトの名無しさん
2015/07/07(火) 15:47:02.78ID:NFKuqu84 # $0 に入っているとして
sub(/%.*/, "");
sub(/.*[^0-9]/, "");
sub(/%.*/, "");
sub(/.*[^0-9]/, "");
769デフォルトの名無しさん
2015/07/08(水) 11:55:27.32ID:rptAPQZX awk -F"[%[]" '{print $2}'
ではまずい?
ではまずい?
770デフォルトの名無しさん
2015/07/08(水) 18:52:19.39ID:GgkVcZ7j771デフォルトの名無しさん
2015/07/10(金) 10:45:11.15ID:VcZTZ3UB テンプレである筈の1が読めないんだが、このスレ的にはPOSIXで書くのが
正統?普段はGawkしか使わないので一応確認。
正統?普段はGawkしか使わないので一応確認。
772デフォルトの名無しさん
2015/10/10(土) 22:36:33.12ID:1AEUTcmG awk の a は、aho の a
ただし、エイホと読むらしい
へぇーーーーー
ただし、エイホと読むらしい
へぇーーーーー
773デフォルトの名無しさん
2016/02/12(金) 17:12:05.45ID:VH2jVHwT awk使ってるシェルスクリプト見ると逃げてるなあと思う
774デフォルトの名無しさん
2016/02/18(木) 00:13:16.92ID:E3KgV2Kz 普通は x[3]=5 と書くが、=なしの
x[3]
だけでもエラーとならず、x を配列として確保し、length(x)=1 になるのを発見
まあ、あまり必要ないけど
x[3]
だけでもエラーとならず、x を配列として確保し、length(x)=1 になるのを発見
まあ、あまり必要ないけど
775デフォルトの名無しさん
2016/02/18(木) 23:58:18.64ID:kHIvdCfG まあ、gawkのマニュアルでも代入の前に参照が出てくるし
776デフォルトの名無しさん
2016/02/20(土) 00:57:58.12ID:OTE8dQpJ そうでしたか、新発見でなかった
777デフォルトの名無しさん
2016/02/20(土) 15:01:09.40ID:91Q+YYwH 代入前にうっかり参照してしまうのは稀に良くある。
778デフォルトの名無しさん
2016/02/28(日) 01:02:06.47ID:Atbyv4Wk IGNORECASE=1
をBEGIN の前に置いてもエラーにならず、不可解動作
セキュリティ的にやばくないの
をBEGIN の前に置いてもエラーにならず、不可解動作
セキュリティ的にやばくないの
779デフォルトの名無しさん
2016/02/28(日) 02:01:41.85ID:2mMmSiU+ >>778
BEGIN セクションを先頭に書けとは何処にも書いてない。
BEGIN を最後に書いても END を最初に書いても問題は無い。
何処に書いても、実際には先頭行読み込み前、各行読み込み時、最終行読み込み後にそれぞれ
パターンマッチが行われている。
ただマッチする条件が特殊だから、先頭か最後でしか中の文が実行されないだけ。
BEGIN セクションを先頭に書けとは何処にも書いてない。
BEGIN を最後に書いても END を最初に書いても問題は無い。
何処に書いても、実際には先頭行読み込み前、各行読み込み時、最終行読み込み後にそれぞれ
パターンマッチが行われている。
ただマッチする条件が特殊だから、先頭か最後でしか中の文が実行されないだけ。
780デフォルトの名無しさん
2016/03/29(火) 09:03:58.15ID:/c8bAcK4 サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート
781awk命
2016/05/10(火) 10:11:56.15ID:qP72K9YB mawk32.exeで「multibyte char」のメッセージがでて困ってます、何が原因でしょう?
抑止する方法はありますか?
multibyte指定のコマンドラインオプションは無いようなのですが?
抑止する方法はありますか?
multibyte指定のコマンドラインオプションは無いようなのですが?
782デフォルトの名無しさん
2016/05/10(火) 13:22:33.71ID:pT7b4QGj UTF-8 が使えないのかも
「mawk multibyte char」で検索!
「mawk multibyte char」で検索!
783awk命
2016/05/11(水) 00:10:08.64ID:EkexSAUH >782
データもプログラムもSJISです。
何に反応して multibyte charが出続けるのか不明です。
gawk高速なので満足なのですが、STDERRに multibyte charがで続けるのでうざいし、この出力ぶんだけ速度も低下?
データもプログラムもSJISです。
何に反応して multibyte charが出続けるのか不明です。
gawk高速なので満足なのですが、STDERRに multibyte charがで続けるのでうざいし、この出力ぶんだけ速度も低下?
784デフォルトの名無しさん
2016/05/11(水) 00:13:30.76ID:Qn6YFszJ 入力にSJISでない文字が混在していることない?
nkf -s 入力ファイル | awk
で変換したら
nkf -s 入力ファイル | awk
で変換したら
785デフォルトの名無しさん
2016/05/11(水) 03:47:08.47ID:6KznZIvs コードを教えて下さい。
チャレンジしましたが、これではダメです。。
(for i=1, i<=NF, i++){
if $i<0{$i=0}
}
print $0
したいことは、下記のような行列の数字があって、負の値をゼロに置換したいです。
▼元の行列
3 15 6 1
-5 4 0 2
8 9 -7 11
▼やりたい変換後の行列イメージ
3 15 6 1
0 4 0 2
8 9 0 11
チャレンジしましたが、これではダメです。。
(for i=1, i<=NF, i++){
if $i<0{$i=0}
}
print $0
したいことは、下記のような行列の数字があって、負の値をゼロに置換したいです。
▼元の行列
3 15 6 1
-5 4 0 2
8 9 -7 11
▼やりたい変換後の行列イメージ
3 15 6 1
0 4 0 2
8 9 0 11
786デフォルトの名無しさん
2016/05/11(水) 04:14:37.49ID:gi9ycYMA 構文がぜんぜん駄目。
{for(i=1;i<=NF;i++)if($i<0){$i=0};print $0;}
「したいことは、〜したいです。」の構文も駄目。典型的なねじれ文。
{for(i=1;i<=NF;i++)if($i<0){$i=0};print $0;}
「したいことは、〜したいです。」の構文も駄目。典型的なねじれ文。
787デフォルトの名無しさん
2016/05/11(水) 07:39:07.59ID:E3fj3Ww+ Ruby, Python などを使えば?
788デフォルトの名無しさん
2016/05/11(水) 12:31:52.37ID:ZhRn3EDd >>787
Ruby, Python スクリプトを提示してみろよ。
Ruby, Python スクリプトを提示してみろよ。
789デフォルトの名無しさん
2016/05/11(水) 22:58:11.78ID:Lckmn9CP790デフォルトの名無しさん
2016/05/13(金) 01:56:22.83ID:VtzDMLxe awk じゃなくてもいいんなら
$ sed 's/-[0-9][0-9]*/0/g' ...
GNU sed なら
$ sed -r 's/-[0-9]+/0/g' ...
でええんちゃう?
$ sed 's/-[0-9][0-9]*/0/g' ...
GNU sed なら
$ sed -r 's/-[0-9]+/0/g' ...
でええんちゃう?
791デフォルトの名無しさん
2016/06/22(水) 00:21:13.08ID:X+fwM1CQ かまぷ 「『シェル芸』に効く AWK処方箋」
エイホ先生「AWKって使い捨ての言語(中略)プラスアルファの処理がやりたいよね。
ただその処理はとても簡単な処理でいい。そこに対して新しいプログラム言語を作っていきたい」
AWKブーム第1世代は「アイドル辞書」で学んだ――日本GNU AWKユーザー会 斉藤さん (1/5):CodeZine(コードジン)
http://codezine.jp/article/detail/9478
2016/06/15 14:00
エイホ先生「AWKって使い捨ての言語(中略)プラスアルファの処理がやりたいよね。
ただその処理はとても簡単な処理でいい。そこに対して新しいプログラム言語を作っていきたい」
AWKブーム第1世代は「アイドル辞書」で学んだ――日本GNU AWKユーザー会 斉藤さん (1/5):CodeZine(コードジン)
http://codezine.jp/article/detail/9478
2016/06/15 14:00
792デフォルトの名無しさん
2016/06/22(水) 23:46:54.12ID:P+7nG182 やたらと続きは登録して読めと言われてもなあ。
このスレが立った頃からJGAUCのHPが更新されていないってのも凄い。
このスレが立った頃からJGAUCのHPが更新されていないってのも凄い。
793デフォルトの名無しさん
2016/08/27(土) 09:20:46.26ID:2q8s4uQl Windows版のgawkで遊んでたら
for (i=0; i<n; i++) より
for (i=0; i<n; i+=1) のほうが
実行時間が短くなることに気づいた
なんだこりゃ
for (i=0; i<n; i++) より
for (i=0; i<n; i+=1) のほうが
実行時間が短くなることに気づいた
なんだこりゃ
794デフォルトの名無しさん
2016/09/13(火) 23:56:36.77ID:mfLTwPLq for(i=1;i<=1000000;i++){a[i]=1}
と
for(i=1;i<=1000000;i++){a[i]=sprintf("1")}
結果は同じはずなのに、後者は異常にメモリを食う!ふしぎ!
と
for(i=1;i<=1000000;i++){a[i]=sprintf("1")}
結果は同じはずなのに、後者は異常にメモリを食う!ふしぎ!
795デフォルトの名無しさん
2016/09/14(水) 00:22:19.58ID:YCeX8Gov 同じじゃないぞ。数値と文字列だ。
ところで、君が使ってる awk はどれ?
apropos awk
ってやってみたら、こんなん出てきた。
gawk (1) - パターン検索・処理言語
igawk (1) - インクルードファイルを使う gawk
a2p (1) - Awk to Perl translator
awk (1) - pattern scanning and text processing language
English (3perl) - use nice English (or awk) names for ugly punctuation v...
mawk (1) - pattern scanning and text processing language
nawk (1) - pattern scanning and text processing language
ところで、君が使ってる awk はどれ?
apropos awk
ってやってみたら、こんなん出てきた。
gawk (1) - パターン検索・処理言語
igawk (1) - インクルードファイルを使う gawk
a2p (1) - Awk to Perl translator
awk (1) - pattern scanning and text processing language
English (3perl) - use nice English (or awk) names for ugly punctuation v...
mawk (1) - pattern scanning and text processing language
nawk (1) - pattern scanning and text processing language
796デフォルトの名無しさん
2016/09/14(水) 22:01:59.31ID:DqYC5LBT >>795
例が悪くてスマソ、Cygwin上でgawk4.1.4使って
for(i=1;i<=1000000;i++){a[i]="1"}
と
for(i=1;i<=1000000;i++){a[i]=sprintf("1")}
でループ脱出直後のメモリ使用量を比較すると
上が60MBytes、下が600MBytesとかになった
cmdで動くgawkの3.1.7でも同じような差がでた
Linuxは試していないけど、もし大丈夫ならWindows版の問題かも
例が悪くてスマソ、Cygwin上でgawk4.1.4使って
for(i=1;i<=1000000;i++){a[i]="1"}
と
for(i=1;i<=1000000;i++){a[i]=sprintf("1")}
でループ脱出直後のメモリ使用量を比較すると
上が60MBytes、下が600MBytesとかになった
cmdで動くgawkの3.1.7でも同じような差がでた
Linuxは試していないけど、もし大丈夫ならWindows版の問題かも
797デフォルトの名無しさん
2016/09/14(水) 22:50:10.30ID:PWB0Awgu798795
2016/09/14(水) 23:40:38.22ID:YCeX8Gov やってみたよ。環境は Debian jessie。
テストプログラム
#!/usr/bin/perl -w
use strict;
{
my $do_ps = 'system("ps p $PPID o pid,sz,args")';
foreach ( 1,'sprintf("1")'){
system('gawk',"BEGIN { for(i=1;i<=1000000;i++){a[i]=$_} $do_ps;}");
}
}
実行結果
PID SZ COMMAND
7389 7693 gawk BEGIN { for(i=1;i<=1000000;i++){a[i]=1} system("ps p $PPID o pid,sz,args");}
PID SZ COMMAND
7392 158116 gawk BEGIN { for(i=1;i<=1000000;i++){a[i]=sprintf("1")} system("ps p $PPID o pid,sz,args");}
KB 単位らしいから 8MB と 160MB 。ただごとじゃない差だね。
1 を "1" に変更してもこんな感じだから数値と文字列の差というわけではなさそう。
テストプログラム
#!/usr/bin/perl -w
use strict;
{
my $do_ps = 'system("ps p $PPID o pid,sz,args")';
foreach ( 1,'sprintf("1")'){
system('gawk',"BEGIN { for(i=1;i<=1000000;i++){a[i]=$_} $do_ps;}");
}
}
実行結果
PID SZ COMMAND
7389 7693 gawk BEGIN { for(i=1;i<=1000000;i++){a[i]=1} system("ps p $PPID o pid,sz,args");}
PID SZ COMMAND
7392 158116 gawk BEGIN { for(i=1;i<=1000000;i++){a[i]=sprintf("1")} system("ps p $PPID o pid,sz,args");}
KB 単位らしいから 8MB と 160MB 。ただごとじゃない差だね。
1 を "1" に変更してもこんな感じだから数値と文字列の差というわけではなさそう。
799デフォルトの名無しさん
2016/09/14(水) 23:49:14.48ID:YCeX8Gov ごめん、書き忘れた。
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p3, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.2-p3, GNU MP 6.0.0)
Copyright (C) 1989, 1991-2014 Free Software Foundation.
800デフォルトの名無しさん
2016/09/17(土) 08:30:37.61ID:didBD5ba よく考えたら、メモリの使用量自体じゃなくて、それがどれだけ増えたかが重要だね。
そして、連想配列の構造体とキーに必要な量はどのケースでも同じと考えられる。
つまり、連想配列の要素のための量がどれだけ違うかを直接知ることができるはず。
というわけで、もう一回テスト。
https://ideone.com/mRuFj7
そして、連想配列の構造体とキーに必要な量はどのケースでも同じと考えられる。
つまり、連想配列の要素のための量がどれだけ違うかを直接知ることができるはず。
というわけで、もう一回テスト。
https://ideone.com/mRuFj7
801デフォルトの名無しさん
2016/09/17(土) 08:32:42.20ID:didBD5ba 実行結果
element before after diff
1 5685 7691 2006
i 5685 29226 23541
sprintf("%d",i) 5685 158124 152439
sprintf("%d",i) + 0 5685 29221 23536
sprintf("%d",i) "" 5685 37026 31341
1000000 要素の配列で 2MB って、いったいどうやってるんだろう。少なすぎる。
sprintf("%d",i) が突出して多いのは sprintf で多めに確保して
切り詰めたりせずにそのまま使ってるのだろうか。
さあ、gawk のソースコードをハックしてみるか!
element before after diff
1 5685 7691 2006
i 5685 29226 23541
sprintf("%d",i) 5685 158124 152439
sprintf("%d",i) + 0 5685 29221 23536
sprintf("%d",i) "" 5685 37026 31341
1000000 要素の配列で 2MB って、いったいどうやってるんだろう。少なすぎる。
sprintf("%d",i) が突出して多いのは sprintf で多めに確保して
切り詰めたりせずにそのまま使ってるのだろうか。
さあ、gawk のソースコードをハックしてみるか!
802デフォルトの名無しさん
2016/09/17(土) 14:11:27.89ID:IIH0ZjSk 推測だけど、stream, yield, callback、遅延処理かも
データをバッファサイズ分だけ読み込んで処理して、
次のコマンドへ送ったら、それを捨てて、次のデータを読み込むのかも
この方式だとメモリは、バッファサイズ分だけしか使わない
データをバッファサイズ分だけ読み込んで処理して、
次のコマンドへ送ったら、それを捨てて、次のデータを読み込むのかも
この方式だとメモリは、バッファサイズ分だけしか使わない
803デフォルトの名無しさん
2016/09/18(日) 10:41:36.96ID:6jI6cHER ベクターに公開されてるgawk3.1.5(と非公開の3.1.7)、ヘンテコな処理が見つかったのでメモ
このgawkのsystem関数を実行すると、環境変数TMPが指してるフォルダに
@echo off
system関数の引数
という2行が書かれたバッチファイルpip?.bat(?はsystem実行回数+1)というのが作成され
このgawkのsystem関数を実行すると、環境変数TMPが指してるフォルダに
@echo off
system関数の引数
という2行が書かれたバッチファイルpip?.bat(?はsystem実行回数+1)というのが作成され
804デフォルトの名無しさん
2016/09/18(日) 10:44:42.56ID:6jI6cHER ・・・いっぺんに書こうとしたらハネられるorz
805803
2016/09/18(日) 10:46:32.08ID:6jI6cHER (続き)
それを/c pip?.batで起動、完了後にpip?.batを
削除という流れでコマンドが実行される
それを/c pip?.batで起動、完了後にpip?.batを
削除という流れでコマンドが実行される
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 青森 緊急地震速報 [ぐれ★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★3 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ★2 [冬月記者★]
- 【速報】衆院議員定数削減法案、自民・維新が今国会成立見送りで調整 [Hitzeschleier★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★4 [蚤の市★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ ★2 [Hitzeschleier★]
- 地蔵 [268244553]
- 日本、高市が辞任しても日中関係を改善させられそうな首相候補がいなくて詰む [329271814]
- 「ごま油」👈何に使うんだこれ [394133584]
- 【速報】エピック無料配布、ホグワーツレガシーWWWWWWWWWWWWWWW🏡
- 【乞食速報】epicで『ホグワーツレガシー』無料キター♪───O(´ん`)O────♪ [931948549]
- 12/12 12:12:12.12に12レス目を狙うスレ
