シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その34
https://mevius.5ch.net/test/read.cgi/tech/1597990675/
探検
シェルスクリプト総合 その35
■ このスレッドは過去ログ倉庫に格納されています
2020/11/24(火) 21:37:20.06ID:mbTiTj6s
309デフォルトの名無しさん
2020/12/09(水) 16:14:27.63ID:vZ4bQifg findコマンドについて、
対象となるファイルが一つも見付からなかった場合でも(grepとかと違って)
終了ステータスは0のままであることって保証されてるっけ?
ここ↓の終了ステータスの節をみても微妙に分からない。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
対象となるファイルが一つも見付からなかった場合でも(grepとかと違って)
終了ステータスは0のままであることって保証されてるっけ?
ここ↓の終了ステータスの節をみても微妙に分からない。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
310デフォルトの名無しさん
2020/12/09(水) 16:28:08.45ID:vZ4bQifg >>308
sed -e '<置換命令>;<置換命令>;<置換命令>'
ってやるのと
sed -e '<置換命令>' -e '<置換命令>' -e '<置換命令>'
ってやるのとの違いってこと?
$ <<. sed -e 's/a/b/g' -e 's/b/c/g'
a-b-c
.
→c-c-c
$ <<. sed -e 's/a/b/g;s/b/c/g'
a-b-c
.
→c-c-c
↑こういう「普通の」操作なら別にどっちでも結果が変わらないから
自分が好きな方で書けばいいんじゃないかな。
sed -e '<置換命令>;<置換命令>;<置換命令>'
ってやるのと
sed -e '<置換命令>' -e '<置換命令>' -e '<置換命令>'
ってやるのとの違いってこと?
$ <<. sed -e 's/a/b/g' -e 's/b/c/g'
a-b-c
.
→c-c-c
$ <<. sed -e 's/a/b/g;s/b/c/g'
a-b-c
.
→c-c-c
↑こういう「普通の」操作なら別にどっちでも結果が変わらないから
自分が好きな方で書けばいいんじゃないかな。
311デフォルトの名無しさん
2020/12/09(水) 16:31:23.67ID:ZEWfqGU4 >>308
見やすいように書けばいいよ
長ければ複数行じゃないと見づらいだろ?
sedって引数で正規表現置換命令を単体で書くような感じだけど
実際は複数の命令を書くところなんだよね
こういう引数で置換!じゃなくて
行を読み取ってその行に対して、あれをやってこれをやってそれをやって・・・と複数の命令を書く
それがわかってない人が意外と多い気がする
見やすいように書けばいいよ
長ければ複数行じゃないと見づらいだろ?
sedって引数で正規表現置換命令を単体で書くような感じだけど
実際は複数の命令を書くところなんだよね
こういう引数で置換!じゃなくて
行を読み取ってその行に対して、あれをやってこれをやってそれをやって・・・と複数の命令を書く
それがわかってない人が意外と多い気がする
312デフォルトの名無しさん
2020/12/09(水) 17:17:45.74ID:h/snEzA+ っていうか前スレがまだ埋まってないやん
検索結果がなんだのくだらない話で埋めてくれてもええんやで
検索結果がなんだのくだらない話で埋めてくれてもええんやで
313デフォルトの名無しさん
2020/12/09(水) 21:46:27.20ID:vZ4bQifg 最近findの-exec被演算子による実行を
for _var_ in *; do ...; done
を置き換える形で好んで使っている。
まあfor文の何が悪いって訳じゃないけど
強いて挙げるならfindを使う方法は余計な変数を用意しなくていい。
for文にしかできないことっていうのもそうそうないし。
for _var_ in *; do ...; done
を置き換える形で好んで使っている。
まあfor文の何が悪いって訳じゃないけど
強いて挙げるならfindを使う方法は余計な変数を用意しなくていい。
for文にしかできないことっていうのもそうそうないし。
314デフォルトの名無しさん
2020/12/09(水) 22:15:47.43ID:sjKwJCQI 何故xargsじゃなくて-exec...
315デフォルトの名無しさん
2020/12/09(水) 22:17:29.01ID:0QlTtfMo 適材適所
forはファイル数が多数になった場合には引数が多すぎでエラーになる可能性があるから
ファイルを繰り返し処理するのはおすすめできない
ただし-execはシェル関数が呼べなかったりシェルスクリプトの処理との連携が
できないというデメリットが有る
外部コマンドを呼び出すだけなら-execでいいが
そうとは限らない場合はfind + while + read ループの方がいいだろう
ファイルの数が少ない場合は外部コマンドを呼び出さない分
for(というか * )の方が速い
それで検索してみたか?
forはファイル数が多数になった場合には引数が多すぎでエラーになる可能性があるから
ファイルを繰り返し処理するのはおすすめできない
ただし-execはシェル関数が呼べなかったりシェルスクリプトの処理との連携が
できないというデメリットが有る
外部コマンドを呼び出すだけなら-execでいいが
そうとは限らない場合はfind + while + read ループの方がいいだろう
ファイルの数が少ない場合は外部コマンドを呼び出さない分
for(というか * )の方が速い
それで検索してみたか?
316デフォルトの名無しさん
2020/12/09(水) 22:27:18.92ID:0QlTtfMo forは余計な変数がいるけど
whileを使えば余計な変数は不要
どうするかって?
set -- *
while [ $# -gt 0 ]; do ...; shift; done
余計な変数がいるからforを使わないというのは正しいが
余計な変数がいるからfindを使うは正しくない
whileを使えば余計な変数は不要
どうするかって?
set -- *
while [ $# -gt 0 ]; do ...; shift; done
余計な変数がいるからforを使わないというのは正しいが
余計な変数がいるからfindを使うは正しくない
317デフォルトの名無しさん
2020/12/09(水) 22:41:19.62ID:vZ4bQifg >>315
> ファイル数が多数になった場合
これ\+じゃなくて\;を使えば別にファイル数が多数になっても
適宜処理できるんじゃない?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
↑これの-execの
If the primary expression is punctuated by a <semicolon>...らへん。
> ファイル数が多数になった場合
これ\+じゃなくて\;を使えば別にファイル数が多数になっても
適宜処理できるんじゃない?
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html
↑これの-execの
If the primary expression is punctuated by a <semicolon>...らへん。
318デフォルトの名無しさん
2020/12/09(水) 22:41:47.84ID:vZ4bQifg >>317
すまん,for文の話だった。
すまん,for文の話だった。
319デフォルトの名無しさん
2020/12/10(木) 13:32:02.46ID:PUDbf/ME >>309
これについて
手元のGNU findで試してみたけど 該当するfile/dirが1件も見付からない場合でも
エラーにならないというかexit statusは0だった。
もっとも これが正しい挙動なのかは不明。
これについて
手元のGNU findで試してみたけど 該当するfile/dirが1件も見付からない場合でも
エラーにならないというかexit statusは0だった。
もっとも これが正しい挙動なのかは不明。
320デフォルトの名無しさん
2020/12/10(木) 14:01:03.28ID:A3fjGgOY POSIXに仕様が書いてあるのに
あの程度も読めないやつがいるんだな
あの程度も読めないやつがいるんだな
321デフォルトの名無しさん
2020/12/10(木) 15:44:18.07ID:PUDbf/ME322デフォルトの名無しさん
2020/12/10(木) 18:05:30.50ID:A3fjGgOY これ以外に何の解釈が有るんだ?
EXIT STATUS
The following exit values shall be returned:
0 All path operands were traversed successfully.
>0 An error occurred.
終了ステータス 次の終了値が返されます。
0 すべてのパスオペランドが正常にトラバースされました。
> 0 エラーが発生しました。
EXIT STATUS
The following exit values shall be returned:
0 All path operands were traversed successfully.
>0 An error occurred.
終了ステータス 次の終了値が返されます。
0 すべてのパスオペランドが正常にトラバースされました。
> 0 エラーが発生しました。
323デフォルトの名無しさん
2020/12/11(金) 00:40:48.48ID:wU/o6Go9324デフォルトの名無しさん
2020/12/11(金) 01:30:47.40ID:s+ujdTab >>323
悪い仕様の書き方の見本みたいなところあるけど
ファイルが見つかったかどうかはEXIT STATUSには無関係
ファイルが見つかっても見つからなくても
なんらかのエラーで走査できないパスが1つでもあればEXIT STATUSは1以上
全てのパスが走査きればファイルが見つかっても見つからなくてもEXIT STATUSは0
悪い仕様の書き方の見本みたいなところあるけど
ファイルが見つかったかどうかはEXIT STATUSには無関係
ファイルが見つかっても見つからなくても
なんらかのエラーで走査できないパスが1つでもあればEXIT STATUSは1以上
全てのパスが走査きればファイルが見つかっても見つからなくてもEXIT STATUSは0
325デフォルトの名無しさん
2020/12/11(金) 02:02:17.08ID:76SqqmH2 一般的にはプログラムが正常終了すれば0
異常終了すれば1
ファイルが一つも見つからなくても
プログラムが正常に終了したので0になる
異常終了すれば1
ファイルが一つも見つからなくても
プログラムが正常に終了したので0になる
326デフォルトの名無しさん
2020/12/11(金) 02:22:36.63ID:ExAO4AKO327デフォルトの名無しさん
2020/12/11(金) 10:03:55.72ID:ExAO4AKO あげ
328デフォルトの名無しさん
2020/12/11(金) 10:56:58.75ID:wU/o6Go9 >>324
ありがとう!
ありがとう!
329デフォルトの名無しさん
2020/12/11(金) 10:57:23.23ID:wU/o6Go9 さげ
330デフォルトの名無しさん
2020/12/11(金) 10:57:25.22ID:vQm1aiEb スレはまだ33も34も使えてたな。w
331デフォルトの名無しさん
2020/12/11(金) 11:16:29.73ID:wU/o6Go9 >>316
setすげー
setすげー
332デフォルトの名無しさん
2020/12/11(金) 12:51:27.35ID:vQm1aiEb sedについて質問。
入力に¥x80以上の文字が含まれていた場合、正規表現「.」はマッチしないんだっけ?
試しに「[¥x00-¥xff]」とするとエラーになるし。。。
任意のバイナリは扱えない?
入力に¥x80以上の文字が含まれていた場合、正規表現「.」はマッチしないんだっけ?
試しに「[¥x00-¥xff]」とするとエラーになるし。。。
任意のバイナリは扱えない?
333デフォルトの名無しさん
2020/12/11(金) 13:23:03.65ID:hnvNpoRh 前スレ埋めマンおつかれさん
334デフォルトの名無しさん
2020/12/11(金) 14:13:42.30ID:wU/o6Go9 >>332
そもそもsedって正規表現のところで\の後に数字を置いて
なにか文字を表わす,みたいなことできなかったと思う。
唯一,s/<ここ>//の←<ここ>の部分で\nが使えるだけ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
そもそもsedって正規表現のところで\の後に数字を置いて
なにか文字を表わす,みたいなことできなかったと思う。
唯一,s/<ここ>//の←<ここ>の部分で\nが使えるだけ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
335デフォルトの名無しさん
2020/12/11(金) 14:42:33.40ID:vQm1aiEb >>334
ほかにも'\\', '\a', '\b', '\f', '\r', '\t', '\v'は使えるようだが、それだけか。
うぬぬ。。。
では、次のようなバイナリがあったとき、数値部分を抽出するにはどうすればいいかな?
<任意のバイナリ><数値テキスト>
ほかにも'\\', '\a', '\b', '\f', '\r', '\t', '\v'は使えるようだが、それだけか。
うぬぬ。。。
では、次のようなバイナリがあったとき、数値部分を抽出するにはどうすればいいかな?
<任意のバイナリ><数値テキスト>
336デフォルトの名無しさん
2020/12/11(金) 16:02:17.03ID:FiGFWWeM grep -aとか?
337デフォルトの名無しさん
2020/12/11(金) 16:18:40.22ID:s+ujdTab GNU grepで-obUaPで使ってる
https://stackoverflow.com/a/17168847
https://stackoverflow.com/a/17168847
338デフォルトの名無しさん
2020/12/11(金) 16:52:32.46ID:vQm1aiEb >>336,337
ありがとう。
一瞬だけgrepでなんとかならんかな?と思ったけど、いやムリやろと自己完結してた。。。
ちなみに試した感じ、grep -o(--only-matching)で充分そうだけど、-a(--text)は何のため?
ありがとう。
一瞬だけgrepでなんとかならんかな?と思ったけど、いやムリやろと自己完結してた。。。
ちなみに試した感じ、grep -o(--only-matching)で充分そうだけど、-a(--text)は何のため?
339デフォルトの名無しさん
2020/12/11(金) 17:36:15.90ID:IIqX/1kZ >>332
\x00以外ならできる
$ cat a.txt
漢字
$ hexdump -C a.txt
00000000 e6 bc a2 e5 ad 97 0a |.......|
$ A=$(printf '\xe6')
$ printf "$A" | hexdump -C
00000000 e6 |.|
$ sed "s/$A/ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......|
\x00以外ならできる
$ cat a.txt
漢字
$ hexdump -C a.txt
00000000 e6 bc a2 e5 ad 97 0a |.......|
$ A=$(printf '\xe6')
$ printf "$A" | hexdump -C
00000000 e6 |.|
$ sed "s/$A/ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......|
340デフォルトの名無しさん
2020/12/11(金) 17:40:10.43ID:IIqX/1kZ $ LANG=C sed "s/./ /" a.txt | hexdump -C
00000000 20 bc a2 e5 ad 97 0a | ......|
00000000 20 bc a2 e5 ad 97 0a | ......|
341デフォルトの名無しさん
2020/12/11(金) 18:05:15.53ID:FiGFWWeM342デフォルトの名無しさん
2020/12/11(金) 18:27:02.69ID:vQm1aiEb >>339
あー、なるほど。
エスケープとかじゃなくて、直にその文字コードの文字を入力したらいいのか。
ってムリ。w
入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
とにかく、sedだってバイナリを扱えないことはない、ということはわかりました。
ありがとう。
あー、なるほど。
エスケープとかじゃなくて、直にその文字コードの文字を入力したらいいのか。
ってムリ。w
入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
とにかく、sedだってバイナリを扱えないことはない、ということはわかりました。
ありがとう。
343デフォルトの名無しさん
2020/12/11(金) 18:29:19.33ID:vQm1aiEb344デフォルトの名無しさん
2020/12/11(金) 18:36:44.59ID:IIqX/1kZ >>342
> 入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
$ A=$(printf '\xe6')
読めるだろ?
後からって読むならスクリプトファイルにしてるはずだし
なにか問題が?
> 入力ができるできないで言えばできるけど、後から文字が読めなくなるし。
$ A=$(printf '\xe6')
読めるだろ?
後からって読むならスクリプトファイルにしてるはずだし
なにか問題が?
345デフォルトの名無しさん
2020/12/11(金) 19:02:21.38ID:vQm1aiEb346デフォルトの名無しさん
2020/12/11(金) 19:13:58.45ID:IIqX/1kZ x80=$(printf '\x80')
xFF=$(printf '\xff')
sed --expression "/[$x80-$xFF]/"
でいいだろ
なんでこう頭が固いのか
xFF=$(printf '\xff')
sed --expression "/[$x80-$xFF]/"
でいいだろ
なんでこう頭が固いのか
347デフォルトの名無しさん
2020/12/11(金) 20:19:54.18ID:i7+Pb2PU シェルスクリプトが大好きなんだ
348デフォルトの名無しさん
2020/12/11(金) 21:29:20.20ID:vQm1aiEb349デフォルトの名無しさん
2020/12/11(金) 21:42:27.33ID:IIqX/1kZ350デフォルトの名無しさん
2020/12/11(金) 21:57:40.12ID:uTa/dhkC ポジ夫はそろそろコテ付けろ
351デフォルトの名無しさん
2020/12/11(金) 22:41:13.04ID:vQm1aiEb >>349
オレのもとのコードはたんに読みにくくてヤバいが、そっちのコードは、一度しか使わない変数で、さらにその名前と値がダブってるところがもっとヤバい。
いきあたりばったりなどではない、確固たるオレの感覚。
わからんのなら、見解の相違ということで。
おしまい。
オレのもとのコードはたんに読みにくくてヤバいが、そっちのコードは、一度しか使わない変数で、さらにその名前と値がダブってるところがもっとヤバい。
いきあたりばったりなどではない、確固たるオレの感覚。
わからんのなら、見解の相違ということで。
おしまい。
352デフォルトの名無しさん
2020/12/11(金) 23:43:56.95ID:IIqX/1kZ ダブルのがいやならこうすれば?少しは頭を使おう
for i in 80 ff; do eval "x$i=$(printf "\x$i")"; done
for i in 80 ff; do eval "x$i=$(printf "\x$i")"; done
353デフォルトの名無しさん
2020/12/11(金) 23:46:03.88ID:wU/o6Go9 sed --expression "/[$(printf '\x80')-$(printf '\xff')]/"
これが「ヤバい」理由を教えてくれたら改善≠ナきるかも知れない。
(正直私にはとくに「ヤバい」コードには見えないのだが……)
これが「ヤバい」理由を教えてくれたら改善≠ナきるかも知れない。
(正直私にはとくに「ヤバい」コードには見えないのだが……)
354デフォルトの名無しさん
2020/12/11(金) 23:48:19.15ID:wU/o6Go9 ていうか読み直したら「感覚」で批判してるのな……
じゃあもういいや。
なんか理論的な欠点があるのかと思って,
私にはそうは見えなかったから勉強の為に訊こうとしたけど
そういう感じではなかったみたい。
じゃあもういいや。
なんか理論的な欠点があるのかと思って,
私にはそうは見えなかったから勉強の為に訊こうとしたけど
そういう感じではなかったみたい。
355デフォルトの名無しさん
2020/12/11(金) 23:52:49.09ID:IIqX/1kZ 他にもこうするとかな。マジ頭が固すぎ
LANG=C sed --expression "s/$(printf '[\x80-\xff]')//"
LANG=C sed --expression "$(printf 's/[\x80-\xff]//')"
LANG=C sed --expression "s/$(printf '[\x80-\xff]')//"
LANG=C sed --expression "$(printf 's/[\x80-\xff]//')"
356デフォルトの名無しさん
2020/12/11(金) 23:57:16.95ID:IIqX/1kZ 「確固たるオレの感覚」が技術力不足によるものだから
自分が未熟であることに気が付かないとどうしようもないだろうな
staticおじさんと一緒
自分が未熟であることに気が付かないとどうしようもないだろうな
staticおじさんと一緒
357デフォルトの名無しさん
2020/12/12(土) 00:10:55.93ID:iu3yHDzN (まだ)POSIX準拠じゃないけど、誰かに言われるのも嫌なので一応w
LANG=C sed --expression $'s/[\x80-\xff])//'
LANG=C sed --expression $'s/[\x80-\xff])//'
358デフォルトの名無しさん
2020/12/12(土) 01:09:44.28ID:4UtPcEnB359デフォルトの名無しさん
2020/12/12(土) 08:26:04.77ID:MG/EKh+i あるコマンドがシバン使って実行されてたかどうかを知る方法ってある?
例えばscript.shってのがあったとして
$ script.sh ./file で起動されたのか、それとも
[file]
#!/usr/bin/env script.sh
$ ./file で起動されたのか区別したい
例えばscript.shってのがあったとして
$ script.sh ./file で起動されたのか、それとも
[file]
#!/usr/bin/env script.sh
$ ./file で起動されたのか区別したい
360デフォルトの名無しさん
2020/12/12(土) 10:35:15.06ID:yfEaL+fJ >>359
どこで判定するの?
script.shになにかを記述して判定するってことでいいか?
fileじゃなくてscript.shで判定するのは厳しいと思うよ。
というのもシバンは,たとえばLinuxでは
#!xxxx yyyy zzzz
というのを
$ xxxx "yyyy zzzz"
というようなコマンドラインに変換≠オて実行する訳だから,
xxxxにとってはシバンなのかコマンドラインなのか
判断付かないと思う(間違ってたらすまん)
どこで判定するの?
script.shになにかを記述して判定するってことでいいか?
fileじゃなくてscript.shで判定するのは厳しいと思うよ。
というのもシバンは,たとえばLinuxでは
#!xxxx yyyy zzzz
というのを
$ xxxx "yyyy zzzz"
というようなコマンドラインに変換≠オて実行する訳だから,
xxxxにとってはシバンなのかコマンドラインなのか
判断付かないと思う(間違ってたらすまん)
361デフォルトの名無しさん
2020/12/12(土) 13:55:22.07ID:Fly4aHPX ちょっと話外れるけど
みんな「シバン」派?
俺の周囲はみんな「シェバン」て言ってる
どっちが主流なんだろ
「エヌテーテー」と「エヌティーティー」みたいな
世代間の差がある様な気がしてる
まぁどっちも意味通じるしどちらも間違ってはいないんだろうけど
微妙に気になる
みんな「シバン」派?
俺の周囲はみんな「シェバン」て言ってる
どっちが主流なんだろ
「エヌテーテー」と「エヌティーティー」みたいな
世代間の差がある様な気がしてる
まぁどっちも意味通じるしどちらも間違ってはいないんだろうけど
微妙に気になる
362デフォルトの名無しさん
2020/12/12(土) 14:01:32.15ID:Fly4aHPX ちなみに「エヌテーテー」と「エヌティーティー」の差は
昔は他社とは電話でコミュニケーション取ってたから
「ティー」だと「イー」と間違われる事が多くて
意図的に「T」を「テー」と発音する様になったんだと先輩に聞いた
だからインターネット以前から働いてる人に多いらしい
昔は他社とは電話でコミュニケーション取ってたから
「ティー」だと「イー」と間違われる事が多くて
意図的に「T」を「テー」と発音する様になったんだと先輩に聞いた
だからインターネット以前から働いてる人に多いらしい
363デフォルトの名無しさん
2020/12/12(土) 14:12:09.74ID:cw6OjyZf364デフォルトの名無しさん
2020/12/12(土) 14:17:40.89ID:Fly4aHPX365デフォルトの名無しさん
2020/12/12(土) 14:54:29.86ID:yfEaL+fJ ドイツ語でTがテー読みだからじゃないの?
366デフォルトの名無しさん
2020/12/12(土) 15:04:57.86ID:zzt2f7BI367デフォルトの名無しさん
2020/12/12(土) 15:25:46.24ID:cvY7SZ8V 一番笑ったのは
tea party を
テー・パーチー
と呼んだこと
tea party を
テー・パーチー
と呼んだこと
368デフォルトの名無しさん
2020/12/12(土) 15:36:24.16ID:4UtPcEnB369デフォルトの名無しさん
2020/12/12(土) 16:34:12.41ID:zzt2f7BI >>368
じゃ一番有力なsharp-bangが語源と考えると「シャバン」
次に有力なhash-bangを日本語読みで考えると「シュバン」だね
語源がどうあれ語呂合わせで既存の単語に当てたんだからその単語の発音を使うのが普通じゃね?
それともshebangの発音を日本語にすると「シェバン」と書く派?
https://www.merriam-webster.com/dictionary/shebang
じゃ一番有力なsharp-bangが語源と考えると「シャバン」
次に有力なhash-bangを日本語読みで考えると「シュバン」だね
語源がどうあれ語呂合わせで既存の単語に当てたんだからその単語の発音を使うのが普通じゃね?
それともshebangの発音を日本語にすると「シェバン」と書く派?
https://www.merriam-webster.com/dictionary/shebang
370デフォルトの名無しさん
2020/12/12(土) 16:41:35.67ID:TQfw61DG えっちでーでーって言いますわよ!
371デフォルトの名無しさん
2020/12/12(土) 16:48:47.64ID:F+pfNArH キヤノン「…」
キユーピー「…」
シヤチハタ「…」
キユーピー「…」
シヤチハタ「…」
372デフォルトの名無しさん
2020/12/12(土) 17:38:18.46ID:yfEaL+fJ373デフォルトの名無しさん
2020/12/12(土) 18:05:16.18ID:E+dxDDH/ 若さって何だ!?
374デフォルトの名無しさん
2020/12/12(土) 18:14:44.89ID:/ZVwqEDj エリチン
375デフォルトの名無しさん
2020/12/12(土) 19:06:47.37ID:cvY7SZ8V ビックカメラの出番か
376デフォルトの名無しさん
2020/12/12(土) 19:20:54.12ID:4UtPcEnB >>373
うっちゅうーけいーじ!ギャ、バーン!!
うっちゅうーけいーじ!ギャ、バーン!!
377デフォルトの名無しさん
2020/12/12(土) 19:56:11.05ID:Fly4aHPX378デフォルトの名無しさん
2020/12/12(土) 20:30:05.90ID:Fly4aHPX >>370
そういえば俺も「デービー」って言うわ
そういえば俺も「デービー」って言うわ
379デフォルトの名無しさん
2020/12/12(土) 20:59:52.06ID:cSSCZNHN セーガー
380デフォルトの名無しさん
2020/12/12(土) 22:07:59.63ID:o8F1hrVe りぽびたんでー
八村塁選手ですらそう言ってるし間違いない
八村塁選手ですらそう言ってるし間違いない
381デフォルトの名無しさん
2020/12/12(土) 22:37:56.72ID:/ZVwqEDj えぬてーてーでーたー
けーでーでーあい
けーでーでーあい
382デフォルトの名無しさん
2020/12/13(日) 11:09:17.16ID:RA5rFVG6 fish
フォルダにいくつかの連番名サブフォルダがあり、その中に連番テキストが入っています。
サブフォルダ00: 000.txt 001.txt
サブフォルダ01: 000.txt
ここにあるテキストをサブフォルダ名とテキスト名を明記してまとめたテキストを作りたいです。
all.txt
00-000.txt
りんご
00-001.txt
ごりら
01-000.txt
らっぱ
一応書いてみたのですがあまりうまくいきませんでした
for x in (seq -w 10)
for y in (seq -w 100) ;printf "%s $x-$y.txt";cat "$x/$y.txt" ; end
end > all.txt
連番が001からではなく000から始めたいのと
no such file or directory が出たときにそのループを終わらせたいです。
よろしくお願いします。
フォルダにいくつかの連番名サブフォルダがあり、その中に連番テキストが入っています。
サブフォルダ00: 000.txt 001.txt
サブフォルダ01: 000.txt
ここにあるテキストをサブフォルダ名とテキスト名を明記してまとめたテキストを作りたいです。
all.txt
00-000.txt
りんご
00-001.txt
ごりら
01-000.txt
らっぱ
一応書いてみたのですがあまりうまくいきませんでした
for x in (seq -w 10)
for y in (seq -w 100) ;printf "%s $x-$y.txt";cat "$x/$y.txt" ; end
end > all.txt
連番が001からではなく000から始めたいのと
no such file or directory が出たときにそのループを終わらせたいです。
よろしくお願いします。
383デフォルトの名無しさん
2020/12/13(日) 13:39:35.23ID:wMleJLXj どっからりんごりらっぱがでてきたんだよ?
384デフォルトの名無しさん
2020/12/13(日) 14:48:45.37ID:FEa/qC9x >>382
find . -type f \( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt
find . -type f \( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt
385デフォルトの名無しさん
2020/12/13(日) 14:50:01.64ID:FEa/qC9x >>384
前提条件
/tmp/382-test$ tree
.
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
└── sub01
└── 000.txt # → らっぱ
前提条件
/tmp/382-test$ tree
.
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
└── sub01
└── 000.txt # → らっぱ
386382
2020/12/13(日) 18:03:10.51ID:RA5rFVG6 >>383
それぞれのテキストファイルの中身ってことです。すいません。
>>384
ありがとうございます。
そのfish文があまり理解できないのでよかったら教えてください。
特に正規表現部分が複雑でうまく想像できません。
サブフォルダ内には.txtではないファイルもありますが、それはall.txtに入れたくありません。
>>385
/tmp/382-test$がよくわかりません。
また
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
├── sub01
│ └──000.txt # → らっぱ
ファイル構造はこうなっています。
サブフォルダ直下の.txt以外はall.txtに入れたくありません。
それぞれのテキストファイルの中身ってことです。すいません。
>>384
ありがとうございます。
そのfish文があまり理解できないのでよかったら教えてください。
特に正規表現部分が複雑でうまく想像できません。
サブフォルダ内には.txtではないファイルもありますが、それはall.txtに入れたくありません。
>>385
/tmp/382-test$がよくわかりません。
また
├── sub00
│ ├── 000.txt # → りんご
│ └── 001.txt # → ごりら
├── sub01
│ └──000.txt # → らっぱ
ファイル構造はこうなっています。
サブフォルダ直下の.txt以外はall.txtに入れたくありません。
387デフォルトの名無しさん
2020/12/13(日) 18:13:33.00ID:6hkD3/kE 後出しヤローに付き合ってたらエンドレスなので終了でいいと思う
388デフォルトの名無しさん
2020/12/13(日) 18:34:18.01ID:FEa/qC9x >>386
うんだからそのフォルダ構造でいいんだって。
5chは行頭空白を勝手に縮めるから階層がおかしく見えるだけ。
*.txtしかいれない設定。
find . -type f -name '*.txt' \
\( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt
うんだからそのフォルダ構造でいいんだって。
5chは行頭空白を勝手に縮めるから階層がおかしく見えるだけ。
*.txtしかいれない設定。
find . -type f -name '*.txt' \
\( -exec sh -c 'echo "$1" | sed -e "s/\.\/sub\([[:digit:]]\{1,\}\)\/\(.*\)/\1-\2/"; cat "$1"' sh \{\} \; \) > all.txt
389デフォルトの名無しさん
2020/12/13(日) 18:35:35.67ID:FEa/qC9x とりあえずやってみろ。というかFish shellじゃなくてBourne系のShell(例えばBash)を使ってくれ。
390デフォルトの名無しさん
2020/12/13(日) 19:15:32.95ID:QIci+yMm それを使えって課題なんでしょ
他の使っちゃダメだよ
他の使っちゃダメだよ
391デフォルトの名無しさん
2020/12/13(日) 20:10:36.68ID:FEa/qC9x なんだ宿題か。じゃあもういいわ勝手にやってろ
392デフォルトの名無しさん
2020/12/13(日) 20:25:17.68ID:17gHgA0W POSIXじゃないからイライラしてんなw
393デフォルトの名無しさん
2020/12/13(日) 21:07:42.22ID:hmf0btsE >>392
ワロタww
ワロタww
394デフォルトの名無しさん
2020/12/13(日) 21:56:47.60ID:RA5rFVG6 >>388
ありがとうございます。
うまくいきました。
色分けされてて見た目がかっこいいのでとりあえずfishに変えてみたんですが、
ネットにあまり情報がなくて知識がないと使いこなせなそうなので考え直します。
ありがとうございます。
うまくいきました。
色分けされてて見た目がかっこいいのでとりあえずfishに変えてみたんですが、
ネットにあまり情報がなくて知識がないと使いこなせなそうなので考え直します。
395デフォルトの名無しさん
2020/12/13(日) 22:08:30.70ID:FEa/qC9x >>392
草。そんな考えになるのか
草。そんな考えになるのか
396デフォルトの名無しさん
2020/12/13(日) 22:44:39.90ID:DQhl+XfW >>394
ただ、今回の回答はほとんどfishに関係ないけどな。w
ただ、今回の回答はほとんどfishに関係ないけどな。w
397デフォルトの名無しさん
2020/12/13(日) 23:47:15.24ID:0ni70Uaa echo a #b は a と出力されるけど
echo a#b は a#b と出力されるのは
POSIXで決まってますか?
echo a#b は a#b と出力されるのは
POSIXで決まってますか?
398デフォルトの名無しさん
2020/12/14(月) 00:24:09.46ID:v0FLOFDn399デフォルトの名無しさん
2020/12/14(月) 01:25:47.70ID:Bk30KwCz400デフォルトの名無しさん
2020/12/14(月) 11:37:42.84ID:Bk30KwCz401デフォルトの名無しさん
2020/12/14(月) 13:24:17.46ID:FxT1T5PM 自分の技術力不足をSQLのせいにしている典型的な例だなw
私は昔、2000行に及ぶ一つのselect文を書いたことがある。
副問い合わせの嵐でおぞましい姿をしていた。
あれはSQLの匠に見せればマシになるのだろうか。
もしあの時、既にシェルスクリプトでやる発想があったらよかったが……。
副問い合わせがいくら連なっても素直に書けるからな。
SQLで副問い合わせを多段に利用する場合、インデントが欠かせないと思う。
例えばselect文なら、from句(データ入口)が途中にあるせいでインデント無しではselect文の範囲を区別しづらい。
一方シェルスクリプトの場合、データの出入口は先頭・末尾なので、
インデント無しに無理なく書き足していける。
私は昔、2000行に及ぶ一つのselect文を書いたことがある。
副問い合わせの嵐でおぞましい姿をしていた。
あれはSQLの匠に見せればマシになるのだろうか。
もしあの時、既にシェルスクリプトでやる発想があったらよかったが……。
副問い合わせがいくら連なっても素直に書けるからな。
SQLで副問い合わせを多段に利用する場合、インデントが欠かせないと思う。
例えばselect文なら、from句(データ入口)が途中にあるせいでインデント無しではselect文の範囲を区別しづらい。
一方シェルスクリプトの場合、データの出入口は先頭・末尾なので、
インデント無しに無理なく書き足していける。
402デフォルトの名無しさん
2020/12/14(月) 13:24:56.95ID:SM2t3qAq403デフォルトの名無しさん
2020/12/14(月) 14:07:16.58ID:AlgRlAv7 怖っ!
404デフォルトの名無しさん
2020/12/14(月) 15:27:22.26ID:11mjuS31 長いSQLを誇る=汚いテーブル設計がされてるレベルの低い現場で働いていた証
405デフォルトの名無しさん
2020/12/14(月) 16:32:17.05ID:SM2t3qAq どっからSQLの話でてきた??
406デフォルトの名無しさん
2020/12/14(月) 16:59:48.58ID:FxT1T5PM https://twitter.com/shellshoccarjpn/status/1338173393993023488
> 己の未熟さを棚に上げ、シェルスクリプトを批判し、使いこなしを放棄し、
> 高級言語やミドルウェア、その他を乱用する。
> そのせいで複雑化して開発効率が落ちれば、また別の、
> 新たなそれらを導入する。愚かな。過度な依存の先に待っているのは破綻だ。
己の未熟さを棚に上げ、SQLを批判し、使いこなしを放棄し、
やってもないのにシェルスクリプトなら素直に書けるとウソを付く
https://twitter.com/5chan_nel (5ch newer account)
> 己の未熟さを棚に上げ、シェルスクリプトを批判し、使いこなしを放棄し、
> 高級言語やミドルウェア、その他を乱用する。
> そのせいで複雑化して開発効率が落ちれば、また別の、
> 新たなそれらを導入する。愚かな。過度な依存の先に待っているのは破綻だ。
己の未熟さを棚に上げ、SQLを批判し、使いこなしを放棄し、
やってもないのにシェルスクリプトなら素直に書けるとウソを付く
https://twitter.com/5chan_nel (5ch newer account)
407デフォルトの名無しさん
2020/12/14(月) 17:14:47.67ID:i9MTeufC いつものPOSIXといいながら
シェルスクリプトのことしか言わず
シェルスクリプトと言いながらawkスクリプトを書く
頭のおかしい人
シェルスクリプトのことしか言わず
シェルスクリプトと言いながらawkスクリプトを書く
頭のおかしい人
408デフォルトの名無しさん
2020/12/14(月) 18:12:48.10ID:NqT1yJqt どっちもめちゃくちゃ気持ち悪いんだけどナニコレ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★2 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 【悲報】ネトウヨ「高市早苗のお陰でインバウンドが激減してそれだけで日本のGDPが0.3%押し下がる!日本を舐めるな!」 [616817505]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
- 名誉教授「高市さん、ネトウヨに称賛されてエクスタシーに酔ってるだけ。」 [153490809]
- 【高市悲報】日経、株安円安止まらない😭ああ…あ… [359965264]
- 【正論】玉木雄一郎「高市さんの答弁は米軍が攻撃を受けた場合を前提としており、撤回するのは難しい」特定野党を完全論破 [519511584]
- 👩「諸事情でミーアキャット飼えなくなったから誰か20万以上で買って😢」 [394133584]
