シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/
シェルスクリプト総合 その30
■ このスレッドは過去ログ倉庫に格納されています
2019/07/01(月) 23:04:27.02ID:/rKj5XUf
592デフォルトの名無しさん
2019/08/07(水) 11:57:46.26ID:WK8NJ3/V またいい問題を思いついたら、質問(?)してやるから
じゃーねーw
じゃーねーw
593デフォルトの名無しさん
2019/08/07(水) 11:57:52.31ID:5FNsDR6i594デフォルトの名無しさん
2019/08/07(水) 12:00:28.63ID:WK8NJ3/V >>593
同時に二つのファイルを開いて処理したい
って言った。
処理の内容は自由に変えられる
って言った。
同時に二つのファイルを開く以外のなにも条件として出してない
それができれば、いろいろと応用が効く
特定のことしかできないdiffやpasteでは
処理の内容が変えられないだろ
同時に二つのファイルを開いて処理したい
って言った。
処理の内容は自由に変えられる
って言った。
同時に二つのファイルを開く以外のなにも条件として出してない
それができれば、いろいろと応用が効く
特定のことしかできないdiffやpasteでは
処理の内容が変えられないだろ
595デフォルトの名無しさん
2019/08/07(水) 12:03:18.97ID:5FNsDR6i596デフォルトの名無しさん
2019/08/07(水) 12:04:06.23ID:9POPBXN5 >>591
なんで自分でわかるのに質問したのか謎
なんで自分でわかるのに質問したのか謎
597デフォルトの名無しさん
2019/08/07(水) 12:06:48.70ID:5FNsDR6i598デフォルトの名無しさん
2019/08/07(水) 12:08:56.79ID:fPg/gK/3 うーん、、、こんな感じ?
$ paste -d '\n' file1 file2 | xargs -d '\n' -n 2 | sh
file1 と file2 の内容例
file1:
====
ls
cp
mv
====
file2:
====
.
x y
y z
====
$ paste -d '\n' file1 file2 | xargs -d '\n' -n 2 | sh
file1 と file2 の内容例
file1:
====
ls
cp
mv
====
file2:
====
.
x y
y z
====
599デフォルトの名無しさん
2019/08/07(水) 12:15:06.92ID:9POPBXN5 あー。「どうだ俺はこんなにできるんだすごいだろう」みたいな。
じゃあ本当にやりたかった事は複数ファイル処理ではなくて自分の能力自慢か。
人から認められて承認欲求を満たしたいってことでもあるかな。
いつも人からバカにされてるから何かで人をバカにしたいというのもあるかも知れない。
合掌。
じゃあ本当にやりたかった事は複数ファイル処理ではなくて自分の能力自慢か。
人から認められて承認欲求を満たしたいってことでもあるかな。
いつも人からバカにされてるから何かで人をバカにしたいというのもあるかも知れない。
合掌。
600デフォルトの名無しさん
2019/08/07(水) 12:15:09.78ID:5FNsDR6i601デフォルトの名無しさん
2019/08/07(水) 12:17:59.15ID:WK8NJ3/V602デフォルトの名無しさん
2019/08/07(水) 12:19:12.78ID:WK8NJ3/V603デフォルトの名無しさん
2019/08/07(水) 12:21:45.21ID:WK8NJ3/V >>599
最初に用件をちゃんといってるのに、例をいうとその例しかできない方法を出すし
その質問にたいする曲解を潰していくうちに、その時間で自分で調べて解決できてしまうんだから
どうしろっていうんだw
最初に用件をちゃんといってるのに、例をいうとその例しかできない方法を出すし
その質問にたいする曲解を潰していくうちに、その時間で自分で調べて解決できてしまうんだから
どうしろっていうんだw
604デフォルトの名無しさん
2019/08/07(水) 12:22:22.45ID:WK8NJ3/V やっぱ「自決しました」で終わらせたほうが良かったか?
605デフォルトの名無しさん
2019/08/07(水) 12:32:00.78ID:9POPBXN5 >>603
普通にわからなくて質問していてやがて自分でわかった場合、普通はそれまでに答えてくれた人に対するお礼をするしこういう方法で出来ましたと自分のやったことを書く。
君の場合なぜか答えてくれた人に対する感謝の念がない。書かれたことが間違いや見当外れのことであっても普通は書いてくれたというだけで感謝するものだ。
しないとするなら少なくともその質問は質問に偽装された何か別のものだ。
普通にわからなくて質問していてやがて自分でわかった場合、普通はそれまでに答えてくれた人に対するお礼をするしこういう方法で出来ましたと自分のやったことを書く。
君の場合なぜか答えてくれた人に対する感謝の念がない。書かれたことが間違いや見当外れのことであっても普通は書いてくれたというだけで感謝するものだ。
しないとするなら少なくともその質問は質問に偽装された何か別のものだ。
606デフォルトの名無しさん
2019/08/07(水) 12:36:21.05ID:5FNsDR6i >>604
teratailとかSOで叩かれてこい
teratailとかSOで叩かれてこい
607デフォルトの名無しさん
2019/08/07(水) 12:37:21.72ID:WK8NJ3/V >>605
いい加減、客様は神様です。はやめたほうが良いよw
いい加減、客様は神様です。はやめたほうが良いよw
608デフォルトの名無しさん
2019/08/07(水) 12:42:23.91ID:9POPBXN5 >>607
言っている意味がわからない。何か特殊な宗教でも信奉しているのかね?
言っている意味がわからない。何か特殊な宗教でも信奉しているのかね?
609デフォルトの名無しさん
2019/08/07(水) 12:45:25.69ID:WK8NJ3/V610デフォルトの名無しさん
2019/08/07(水) 13:00:34.72ID:9POPBXN5611デフォルトの名無しさん
2019/08/07(水) 13:17:46.60ID:VwbuDBsd612デフォルトの名無しさん
2019/08/07(水) 13:23:21.21ID:WK8NJ3/V 日本の礼儀と隣国の話しかできないのが世界が狭いよな
613デフォルトの名無しさん
2019/08/07(水) 13:27:24.72ID:9POPBXN5 >>611
何かを与えてくれたらお礼をするのは国に関係なくどこでも共通の礼儀だが、君はそれをしないばかりか与えてもらって当然と考えるとするならば、それは正に今の韓国と同じだね。
何かを与えてくれたらお礼をするのは国に関係なくどこでも共通の礼儀だが、君はそれをしないばかりか与えてもらって当然と考えるとするならば、それは正に今の韓国と同じだね。
614デフォルトの名無しさん
2019/08/07(水) 13:29:19.39ID:9POPBXN5 優遇して与えていた側に礼を言わないばかりか盗人猛々しいとでも言うかね?
615デフォルトの名無しさん
2019/08/07(水) 13:31:40.13ID:WK8NJ3/V ということで、質問に対して
答えを返した俺に感謝しろ
という話さ
答えを返した俺に感謝しろ
という話さ
616デフォルトの名無しさん
2019/08/07(水) 13:37:09.23ID:5FNsDR6i これ触っちゃあかんやつや
617デフォルトの名無しさん
2019/08/07(水) 13:39:19.49ID:WK8NJ3/V 俺は別に自決しましたで終わらせても良かったんだが、
俺ができるってことを示さなければ、
シェルスクリプトで同時に二つのファイルを開けるってことも
知らなかったんだろうな
俺ができるってことを示さなければ、
シェルスクリプトで同時に二つのファイルを開けるってことも
知らなかったんだろうな
618デフォルトの名無しさん
2019/08/07(水) 13:41:42.46ID:aj+f89Vu >>616
それを触りすぎw
それを触りすぎw
619デフォルトの名無しさん
2019/08/07(水) 13:46:29.59ID:WK8NJ3/V この先の人生、似たような問題に直面したとき、
今日の会話を思い出しながらも、なかったことにして
俺が回答したテクニックを使うのだろう
今日の会話を思い出しながらも、なかったことにして
俺が回答したテクニックを使うのだろう
620デフォルトの名無しさん
2019/08/07(水) 13:49:03.15ID:9POPBXN5 >>615
質問者は君自信だ。それに関しては君が君に感謝すれば良い。他の人は少なくとも同じ質問はしていないのだから君に感謝する必要はない。
という、普通の事が君にはわからないのか?発達障害か何かか?だったらしょうがないから形だけ他の人を真似て合わせろ。そうすれば無用なトラブルは減らせる。
質問者は君自信だ。それに関しては君が君に感謝すれば良い。他の人は少なくとも同じ質問はしていないのだから君に感謝する必要はない。
という、普通の事が君にはわからないのか?発達障害か何かか?だったらしょうがないから形だけ他の人を真似て合わせろ。そうすれば無用なトラブルは減らせる。
621デフォルトの名無しさん
2019/08/07(水) 13:51:39.12ID:WK8NJ3/V ん?他の人って会話に参加してる人だけのことだと思ってるのか?
検索で見つけた人とかあるだろう。
相変わらず視野が狭いんだな。
検索で見つけた人とかあるだろう。
相変わらず視野が狭いんだな。
622デフォルトの名無しさん
2019/08/07(水) 14:04:14.01ID:WK8NJ3/V 検索した人は俺に感謝する。ここでレスしてたやつも同じ問題がでたとき
嫌々ながら俺に感謝する。ウィン♪ウィン♪ってやつではないか
嫌々ながら俺に感謝する。ウィン♪ウィン♪ってやつではないか
623デフォルトの名無しさん
2019/08/07(水) 14:08:05.92ID:9POPBXN5 >>621
おだいじに。
おだいじに。
624デフォルトの名無しさん
2019/08/07(水) 14:09:22.96ID:9POPBXN5 夏の暑さも酷なことをするもんだ。
625デフォルトの名無しさん
2019/08/07(水) 14:11:08.56ID:WK8NJ3/V エアコンもってないのか?
626デフォルトの名無しさん
2019/08/07(水) 15:11:31.23ID:3XS5MIC7 どうでもいいけどアレを「完璧な回答」とか言ってる時点でお察しw
ファイルディスクリプタを使った方法にはPOSIXの範囲では解決できない重大な落とし穴がある。
まあ態々言わなくても分かるだろうから,明言はしないがw
ファイルディスクリプタを使った方法にはPOSIXの範囲では解決できない重大な落とし穴がある。
まあ態々言わなくても分かるだろうから,明言はしないがw
627デフォルトの名無しさん
2019/08/07(水) 15:23:56.01ID:3XS5MIC7 ああ一応分からん人の為にヒントをいうと,実は2018年あたりの過去スレで言及してる。
628デフォルトの名無しさん
2019/08/07(水) 18:34:55.40ID:WK8NJ3/V ※その落とし穴がなんなのか言わないのは、わからん人のためよりも
俺に意地悪をすることを選んだから。結局それがそいつの本性なんだよ。
俺に意地悪をすることを選んだから。結局それがそいつの本性なんだよ。
629デフォルトの名無しさん
2019/08/07(水) 19:38:28.14ID:DcvmRDxD {{"item1":["key1":"value1"]},{"item2":["key2":"value2"]}}
{{"item1":["key1":"value1"]}}
{}
{{"item1":["key1":"value1"]},{"item2":["key2":"value2"]},{"item3":["key3":"value3"]}}
みたいに中途半端なjsonがたくさん混ざっているファイルを
item1,item2,item3
value1,value2,
value1,,
,,
value1,value2,value3
のような綺麗なcsvで出力する方法ってありますか?
jqコマンドを使っても上手くいかず……
{{"item1":["key1":"value1"]}}
{}
{{"item1":["key1":"value1"]},{"item2":["key2":"value2"]},{"item3":["key3":"value3"]}}
みたいに中途半端なjsonがたくさん混ざっているファイルを
item1,item2,item3
value1,value2,
value1,,
,,
value1,value2,value3
のような綺麗なcsvで出力する方法ってありますか?
jqコマンドを使っても上手くいかず……
630デフォルトの名無しさん
2019/08/07(水) 19:41:37.81ID:WK8NJ3/V631デフォルトの名無しさん
2019/08/07(水) 19:46:34.34ID:WK8NJ3/V 1行ずつループで回してもできそうだが、なんどもjqコマンドを呼び出すことになって
時間がかかりそうだから、
[
1行目 ,
2行目 ,
3行目 ,
4行目
]
みたいに変換して、jq一発にしたほうが速いだろうな。
そのやり方は、俺以外でも答えられるやろ?
時間がかかりそうだから、
[
1行目 ,
2行目 ,
3行目 ,
4行目
]
みたいに変換して、jq一発にしたほうが速いだろうな。
そのやり方は、俺以外でも答えられるやろ?
632デフォルトの名無しさん
2019/08/07(水) 22:04:49.28ID:fPg/gK/3 >>629
GNU awk 4.0.0 以降で
$ gawk -ijoin -vFPAT='"[^"]+"' '{
for(i=1;i<=NF;i+=3){
item[$i]=1
row[NR,$i]=$(i+2)
}
}END{
for(i in item){x[n++]=i}
n--
print join(x,0,n,",")
for(i=1;i<=NR;i++){
k=0
for(j in x){
r[k++]=row[i,x[j]]
}
print join(r,0,n,",")
}
}' data.jsonl
GNU awk 4.0.0 以降で
$ gawk -ijoin -vFPAT='"[^"]+"' '{
for(i=1;i<=NF;i+=3){
item[$i]=1
row[NR,$i]=$(i+2)
}
}END{
for(i in item){x[n++]=i}
n--
print join(x,0,n,",")
for(i=1;i<=NR;i++){
k=0
for(j in x){
r[k++]=row[i,x[j]]
}
print join(r,0,n,",")
}
}' data.jsonl
633デフォルトの名無しさん
2019/08/08(木) 02:47:04.99ID:/tBUMiMq これは、Ruby で、JSON.parse できない。
何や、この形式は?
{"item1":["key1":"value1"]}
[ ] の中に、{ } を入れたら、OK だが、
{"item1":[{"key1":"value1"}]}
何や、この形式は?
{"item1":["key1":"value1"]}
[ ] の中に、{ } を入れたら、OK だが、
{"item1":[{"key1":"value1"}]}
634633
2019/08/08(木) 03:01:29.15ID:/tBUMiMq https://jsonformatter.curiousconcept.com/
このサイトで、JSON の形式が正しいかどうかチェックしたら、エラーになった!
{"item1":["key1":"value1"]}
Error:Expecting comma or ], not colon.
このサイトで、JSON の形式が正しいかどうかチェックしたら、エラーになった!
{"item1":["key1":"value1"]}
Error:Expecting comma or ], not colon.
635デフォルトの名無しさん
2019/08/08(木) 03:55:09.53ID:10jj0QOT636デフォルトの名無しさん
2019/08/08(木) 06:10:00.05ID:l7k6B2kQ >>629
{{"item1":["key1":"value1"]}}
じゃなくて
{{"aaaa":["bbbb":"cccc"]}}
でも
"cccc" って表示されるけどOK?
あと {{"item1":["key1":"val\"ue1"]}}
みたいに " がデータに入ってる場合はあるの?
それと key1、key2、key3 ってキー名が変わるのは正しいの?
jsonlとしても正しくないけど、書き間違いじゃないの?
{{"item1":["key1":"value1"]}}
じゃなくて
{{"aaaa":["bbbb":"cccc"]}}
でも
"cccc" って表示されるけどOK?
あと {{"item1":["key1":"val\"ue1"]}}
みたいに " がデータに入ってる場合はあるの?
それと key1、key2、key3 ってキー名が変わるのは正しいの?
jsonlとしても正しくないけど、書き間違いじゃないの?
637デフォルトの名無しさん
2019/08/08(木) 07:06:18.58ID:DLp++heI638633
2019/08/08(木) 07:20:32.75ID:/tBUMiMq JavaScript で、: は、オブジェクトの属性だろ。
だから、{ } 内でしか使えない
だから、1 はダメで、2, 3 はOK
1. {"item1":["key1":"value1"]}
2.1 {"item1":["value1"]}
2.2 {"item1":["key1","value1"]}
3. {"item1":[{"key1":"value1"}]}
だから、{ } 内でしか使えない
だから、1 はダメで、2, 3 はOK
1. {"item1":["key1":"value1"]}
2.1 {"item1":["value1"]}
2.2 {"item1":["key1","value1"]}
3. {"item1":[{"key1":"value1"}]}
639デフォルトの名無しさん
2019/08/08(木) 07:25:15.97ID:l7k6B2kQ フォーマットが不自然なんだよな。独自フォーマットなら
その仕様を言ってくれないと答えようがない。
例えば、そこに書いてあるキー以外も存在するのか?とか
改行はどうなってるのかとか
その仕様を言ってくれないと答えようがない。
例えば、そこに書いてあるキー以外も存在するのか?とか
改行はどうなってるのかとか
640デフォルトの名無しさん
2019/08/08(木) 09:21:44.35ID:rLFqUIXU641デフォルトの名無しさん
2019/08/08(木) 10:06:35.63ID:X/CTiqlR 本物のjsonにしちゃえ
独自フォーマットする利点ないでしょ
独自フォーマットする利点ないでしょ
642デフォルトの名無しさん
2019/08/08(木) 11:39:13.74ID:/tBUMiMq 独自形式など、作るだけ無駄
パーサーを作るにも、特殊文字のエスケープ処理など、バグが増えるだけ!
パーサーを作るにも、特殊文字のエスケープ処理など、バグが増えるだけ!
643デフォルトの名無しさん
2019/08/08(木) 11:47:10.43ID:FeKpuToe 昨日質問したものですが中途半端に書いてしまい申し訳ありませんでした
まだ勉強不足の学生でして……
こっちが正しいjsonと出力させたい内容です
{"aaa":{"bbb":["ccc"]},"xxx":{"yyy":["zzz"]},"あああ":{"いいい":["ううう"]}}
{"aaa":{"bbb":["ccc"]},"xxx":{"yyy":["zzz"]}}
{}
{"aaa":{"bbb":["ccc"]}}
↓
aaa,xxx,あああ
ccc,zzz,いいい
ccc,zzz,
,,
ccc,,
まだ勉強不足の学生でして……
こっちが正しいjsonと出力させたい内容です
{"aaa":{"bbb":["ccc"]},"xxx":{"yyy":["zzz"]},"あああ":{"いいい":["ううう"]}}
{"aaa":{"bbb":["ccc"]},"xxx":{"yyy":["zzz"]}}
{}
{"aaa":{"bbb":["ccc"]}}
↓
aaa,xxx,あああ
ccc,zzz,いいい
ccc,zzz,
,,
ccc,,
644デフォルトの名無しさん
2019/08/08(木) 11:47:20.30ID:FeKpuToe jsonlですね
645デフォルトの名無しさん
2019/08/08(木) 11:53:47.59ID:FeKpuToe aaa,xxx,あああ
ccc,zzz,ううう
ccc,zzz,
,,
ccc,,
です
ccc,zzz,ううう
ccc,zzz,
,,
ccc,,
です
646デフォルトの名無しさん
2019/08/08(木) 12:28:53.27ID:FeKpuToe 連レスすみません
例えばaaaとあああだけ抜き取りたい場合
さきほどのjsonlから
aaa,あああ
ccc,ううう
ccc,
,
ccc,
と表示させる方法も知りたいです。
全部表示させた後にawkで削除した方がいいのでしょうか?
例えばaaaとあああだけ抜き取りたい場合
さきほどのjsonlから
aaa,あああ
ccc,ううう
ccc,
,
ccc,
と表示させる方法も知りたいです。
全部表示させた後にawkで削除した方がいいのでしょうか?
647デフォルトの名無しさん
2019/08/08(木) 12:42:36.15ID:X/CTiqlR 使いまわせるから
...|awk 'Xxx'
...|awk 'Xxx'
648デフォルトの名無しさん
2019/08/08(木) 12:46:24.42ID:0w2TiazL649デフォルトの名無しさん
2019/08/08(木) 12:56:15.36ID:PTwvjoI/650デフォルトの名無しさん
2019/08/08(木) 13:40:08.52ID:l7k6B2kQ >>646
もとのデータが悪かっただけ。
jsonlだったらjqで普通に扱える。
echo "aaa,xxx,あああ";
jq -r '[.aaa.bbb[0], .xxx.yyy[0], ."あああ"."いいい"[0]] | @csv' data.jsonl
ダブルクォートがいらないなら、@csvをjoin(",")にする
こことか見れば良い
https://medium.com/veltra-engineering/jq-supports-json-to-csv-fb5c951a9575
もとのデータが悪かっただけ。
jsonlだったらjqで普通に扱える。
echo "aaa,xxx,あああ";
jq -r '[.aaa.bbb[0], .xxx.yyy[0], ."あああ"."いいい"[0]] | @csv' data.jsonl
ダブルクォートがいらないなら、@csvをjoin(",")にする
こことか見れば良い
https://medium.com/veltra-engineering/jq-supports-json-to-csv-fb5c951a9575
651デフォルトの名無しさん
2019/08/08(木) 14:01:33.05ID:SmETYGNQ652デフォルトの名無しさん
2019/08/08(木) 14:03:20.11ID:l7k6B2kQ なるほどjqコマンドだけでやるにはこうすればいいのか
jq -r -s '["aaa","xxx","あああ"], (.[] | [.aaa.bbb[0], .xxx.yyy[0], ."あああ"."いいい"[0]]) | @csv' data.jsonl
jq -r -s '["aaa","xxx","あああ"], (.[] | [.aaa.bbb[0], .xxx.yyy[0], ."あああ"."いいい"[0]]) | @csv' data.jsonl
654デフォルトの名無しさん
2019/08/08(木) 14:12:53.47ID:DLp++heI なんだかなーw
655デフォルトの名無しさん
2019/08/08(木) 14:16:46.09ID:SmETYGNQ 今調べてみたら
.aaa.bbb[]と入力していたので全部一致してないとエラーになってたっぽいです
.aaa.bbb[0]に変えている>>650では一致してないところも空欄で出力されてましたので求めるものでした
.aaa.bbb[]と入力していたので全部一致してないとエラーになってたっぽいです
.aaa.bbb[0]に変えている>>650では一致してないところも空欄で出力されてましたので求めるものでした
656デフォルトの名無しさん
2019/08/08(木) 14:20:36.14ID:10jj0QOT >>653
もしかして皮肉という概念をご存知ない…?
もしかして皮肉という概念をご存知ない…?
657デフォルトの名無しさん
2019/08/08(木) 14:26:26.08ID:DLp++heI658デフォルトの名無しさん
2019/08/08(木) 14:29:47.06ID:SmETYGNQ >>657
要素数は一つですので大丈夫です。
要素数は一つですので大丈夫です。
659デフォルトの名無しさん
2019/08/08(木) 14:41:50.23ID:DLp++heI >>658
問題ないならいいけど [0] より []? 使ったほうが良いよ
問題ないならいいけど [0] より []? 使ったほうが良いよ
660デフォルトの名無しさん
2019/08/08(木) 14:45:49.24ID:PRJfiUWC bashって可変長引数で綺麗に処理できないの?
bash test.sh a b c d e
って打ったら
xaz,xbz,xcz,xdz,xez
bash test.sh a b c
って打ったら
xaz,xbz,xcz
って出るものを作りたいんだが$@を使って色々やっても
xa b c d ez,
って出力しかできぬ
bash test.sh a b c d e
って打ったら
xaz,xbz,xcz,xdz,xez
bash test.sh a b c
って打ったら
xaz,xbz,xcz
って出るものを作りたいんだが$@を使って色々やっても
xa b c d ez,
って出力しかできぬ
662631
2019/08/08(木) 14:50:53.94ID:l7k6B2kQ printf 'x%sz,' a b c d e
xaz,xbz,xcz,xdz,xez,
xaz,xbz,xcz,xdz,xez,
663デフォルトの名無しさん
2019/08/08(木) 14:55:38.24ID:X/CTiqlR >>660
while [ $# -gt 0 ];
do
printf x
printf $1
printf "z\n"
shift
done
sh multi_arg.sh a b c d e
xaz
xbz
xcz
xdz
xez
\nいらなかったな
あと間に,でやるやつ必要か
そのへんpass
while [ $# -gt 0 ];
do
printf x
printf $1
printf "z\n"
shift
done
sh multi_arg.sh a b c d e
xaz
xbz
xcz
xdz
xez
\nいらなかったな
あと間に,でやるやつ必要か
そのへんpass
664631
2019/08/08(木) 15:01:30.29ID:l7k6B2kQ ぶっちゃけ $@ を使ってどうやれば
xa b c d ez, が出せるんだろうって悩むレベルw
xa b c d ez, が出せるんだろうって悩むレベルw
665デフォルトの名無しさん
2019/08/08(木) 15:10:54.30ID:PTwvjoI/ $ set -- {a..e}
$ l=;for v in "$@";do l="${l}${l:+,}${v}";done;echo "$l"
for 文で "in" を省略すると "$@" が対象になるので
$ l=;for v;do l="${l}${l:+,}${v}";done;echo "$l"
としても可。
$ l=;for v in "$@";do l="${l}${l:+,}${v}";done;echo "$l"
for 文で "in" を省略すると "$@" が対象になるので
$ l=;for v;do l="${l}${l:+,}${v}";done;echo "$l"
としても可。
666デフォルトの名無しさん
2019/08/08(木) 15:33:36.84ID:PTwvjoI/ いけね、x と z で挟むの忘れてたわ
$ l=;for v;do l="${l}${l:+,}x${v}z";done;echo "$l"
$ l=;for v;do l="${l}${l:+,}x${v}z";done;echo "$l"
667デフォルトの名無しさん
2019/08/08(木) 18:25:37.21ID:cY5mPUh7 >>660や
これを1まとめの変数にする方法ってあるか?
bash test.sh a b c d
って打つと↓を変数で使えるようにしたい(最後だけ,を外して)
xaz,xbz,xcz,xdz
ループさせて配列に入れて${test[@]}でxaz,xbz,xcz,xdz,
って出力させることならできたけど最後の,が邪魔で仕方ない
これを1まとめの変数にする方法ってあるか?
bash test.sh a b c d
って打つと↓を変数で使えるようにしたい(最後だけ,を外して)
xaz,xbz,xcz,xdz
ループさせて配列に入れて${test[@]}でxaz,xbz,xcz,xdz,
って出力させることならできたけど最後の,が邪魔で仕方ない
668デフォルトの名無しさん
2019/08/08(木) 18:27:40.23ID:l7k6B2kQ > これを1まとめの変数にする方法ってあるか?
あるに決まってるだろ。
自分でやり方を模索しろや
> 最後の,が邪魔で仕方ない
ならつかないようにするか消せばいいだけだろ
あるに決まってるだろ。
自分でやり方を模索しろや
> 最後の,が邪魔で仕方ない
ならつかないようにするか消せばいいだけだろ
669デフォルトの名無しさん
2019/08/08(木) 18:31:34.31ID:l7k6B2kQ シェルスクリプト特有のテクニックがわからないならともかく
常識的なやり方すら見いだせないなら適性無いで
常識的なやり方すら見いだせないなら適性無いで
670デフォルトの名無しさん
2019/08/08(木) 18:37:00.79ID:cY5mPUh7 マウント上等!教えてくれ!
${test[@]%,*}でいけると思ったが、これって配列じゃ無理なんか
悔しいねぇw
${test[@]%,*}でいけると思ったが、これって配列じゃ無理なんか
悔しいねぇw
671デフォルトの名無しさん
2019/08/08(木) 18:38:11.84ID:l7k6B2kQ 誰かが教えてやってるやろ
672デフォルトの名無しさん
2019/08/08(木) 18:38:45.45ID:10jj0QOT673デフォルトの名無しさん
2019/08/08(木) 18:39:41.22ID:l7k6B2kQ おいおい。IDみろよ。俺は重大な落とし穴があるで
教えんけどなー。みたいなことは言わない。
教えんけどなー。みたいなことは言わない。
674デフォルトの名無しさん
2019/08/08(木) 18:41:43.33ID:10jj0QOT >>667
$ cat ./test.sh
eval -- "var=$(printf 'x%sz,' $@ | sed -e 's/,$//')"
echo $var
$ bash ./test.sh a b c d
xaz,xbz,xcz,xdz
どうぞ。
$ cat ./test.sh
eval -- "var=$(printf 'x%sz,' $@ | sed -e 's/,$//')"
echo $var
$ bash ./test.sh a b c d
xaz,xbz,xcz,xdz
どうぞ。
675デフォルトの名無しさん
2019/08/08(木) 18:42:02.61ID:zA0vFDSV シェルスクリプトにこだわっても意味内
単なる自己満足
単なる自己満足
676デフォルトの名無しさん
2019/08/08(木) 18:43:40.32ID:l7k6B2kQ >>674
evalいらねーだろ。その程度でいーばるーなよw
evalいらねーだろ。その程度でいーばるーなよw
677デフォルトの名無しさん
2019/08/08(木) 18:47:18.20ID:l7k6B2kQ あと、eval の -- は POSIX準拠じゃない。 dashではエラーになるな。
678デフォルトの名無しさん
2019/08/08(木) 18:49:50.48ID:l7k6B2kQ それと $@(と$var)にダブルクォートがついてないのもマイナス点だな
679デフォルトの名無しさん
2019/08/08(木) 18:52:26.35ID:PTwvjoI/ >>674
$ bash ./test.sh a "b c" d
xaz,xbz,xcz,xdz
となってしまうので、
var=$(printf 'x%sz,' "$@" | sed -e 's/,$//')
か
var=$(printf 'x%sz,' "$@" | head -c -1)
$ bash ./test.sh a "b c" d
xaz,xbz,xcz,xdz
となってしまうので、
var=$(printf 'x%sz,' "$@" | sed -e 's/,$//')
か
var=$(printf 'x%sz,' "$@" | head -c -1)
680デフォルトの名無しさん
2019/08/08(木) 18:59:43.93ID:X/CTiqlR 多分配列つめこんで paste で糊付けしてくれる
paste はいわゆる join()のはず
paste はいわゆる join()のはず
681デフォルトの名無しさん
2019/08/08(木) 18:59:47.03ID:l7k6B2kQ sed呼び出すぐらいならParameter expansionを使ったほうが楽で速いだろう
682デフォルトの名無しさん
2019/08/08(木) 19:04:50.27ID:cY5mPUh7 お前らありがとう
want="$(IFS=,; echo "${test[*]}"}"
ってやったら求めるものが出せた
want="$(IFS=,; echo "${test[*]}"}"
ってやったら求めるものが出せた
683デフォルトの名無しさん
2019/08/08(木) 19:09:09.68ID:10jj0QOT >>677
bash前提のスクリプトなんですがそれは
bash前提のスクリプトなんですがそれは
684デフォルトの名無しさん
2019/08/08(木) 19:09:41.31ID:l7k6B2kQ カッコの対応がおかしい。
サブシェルに入れる理由がないわけじゃないが、これで処理終了なら遅くなるだけ
この程度でbash依存するのは無駄。長くなってるだけ
サブシェルに入れる理由がないわけじゃないが、これで処理終了なら遅くなるだけ
この程度でbash依存するのは無駄。長くなってるだけ
685デフォルトの名無しさん
2019/08/08(木) 19:11:29.10ID:l7k6B2kQ >>683
じゃあbash 2.05aとそれ以前でエラーになると言っておこう
じゃあbash 2.05aとそれ以前でエラーになると言っておこう
686デフォルトの名無しさん
2019/08/08(木) 19:14:12.37ID:l7k6B2kQ ${l}${l:+,} は俺もよく使うが、ループで毎回比較処理をすることになるし、
最後に末尾処理をしたほうが、速いんじゃないかなーって
常々思ってしまう。lが二回出てくるから1行が長くなることが多いし
最後に末尾処理をしたほうが、速いんじゃないかなーって
常々思ってしまう。lが二回出てくるから1行が長くなることが多いし
687デフォルトの名無しさん
2019/08/08(木) 19:53:16.22ID:l7k6B2kQ 試してみたけどやっぱりだ。最後に末尾処理するほうが速い。
dashやkshだと2倍ぐらい差が出る。
bashやzshはこういう処理が何故か遅くて差もあまり出ないけど
dashやkshだと2倍ぐらい差が出る。
bashやzshはこういう処理が何故か遅くて差もあまり出ないけど
688デフォルトの名無しさん
2019/08/08(木) 22:21:10.86ID:HFY26hHh へんなこだわりだな
689デフォルトの名無しさん
2019/08/08(木) 22:27:17.98ID:/tBUMiMq Ruby では、Array#join で自動的に、最後の区切り文字を削除してくれる
ary = [ "a", "b" ]
p ary.join( "," )
#=> "a,b"
ary = [ "a", "b" ]
p ary.join( "," )
#=> "a,b"
690デフォルトの名無しさん
2019/08/08(木) 22:40:09.53ID:X/CTiqlR そりゃそうだ joinは配列から文字列に変換するときに
間の糊付けをしてくれるのだから
間の糊付けをしてくれるのだから
691デフォルトの名無しさん
2019/08/08(木) 23:05:36.97ID:PTwvjoI/ 単純な join でセパレータが一文字なら定番の
$ (IFS=,; echo "$*")
で良いのだろうけど
$ (IFS=,; echo "$*")
で良いのだろうけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 「働いて働いて」の流行語大賞に懸念 「言葉が独り歩き」 過労自殺遺族 [尺アジ★]
- 車のボンネットに乗せて走行し振り落とした殺人未遂容疑で逮捕 中国籍のタクシー運転手を不起訴処分 [七波羅探題★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 ★3 [少考さん★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★2
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★3
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
- 🏡
- 【悲報】高市早苗、被災民に対し「自分の命くらいは自分で守ってくださいね」と切り捨てし大炎上 [339712612]
- 雑談しよう!!
