X



シェルスクリプト総合 その34
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2020/08/21(金) 15:17:55.64ID:mArnj/tT
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/
0952946
垢版 |
2020/11/18(水) 16:43:39.93ID:oGkGNlvA
正しく出力される。
実際には、c, d, f などは出力されていないけど

a,2020-11-17,aaa
b,2020-11-18,bbb
c
d
e,2020-11-21,eee
f
g,2020-11-23,ggg
h,2020-11-24,hhh
i
j,2020-11-26,jjj
k,2020-11-27,kkk
l,2020-11-28,lll
m
n
o,2020-12-01,ooo
p,2020-12-02,ppp
q,2020-12-03,qqq
r
s,2020-12-05,sss
t,2020-12-06,ttt
u
0953デフォルトの名無しさん
垢版 |
2020/11/18(水) 17:46:13.72ID:XsHXPiSN
>>952
ありがとう

何故だろう
0954デフォルトの名無しさん
垢版 |
2020/11/18(水) 22:39:32.53ID:c4VI5UKm
フィールド数が想定がところがあるとエラーで getline が呼ばれなくて
var がそのままになったりするのかも?
0956デフォルトの名無しさん
垢版 |
2020/11/18(水) 23:00:38.15ID:XsHXPiSN
>>954
これかも
1列目にブランク入りのデータが入ってた
0957デフォルトの名無しさん
垢版 |
2020/11/18(水) 23:22:35.65ID:2l0B+GoX
AWKのgetlineってめっちゃ便利よね。
これ使い始めたらもうシェルスクリプトじゃなくてAWKスクリプトになるけどw
0958デフォルトの名無しさん
垢版 |
2020/11/18(水) 23:25:59.76ID:XsHXPiSN
>>956
いや違うわ
ブランク入ってたらそもそも$2がxにならない
0960デフォルトの名無しさん
垢版 |
2020/11/19(木) 07:48:43.53ID:jemYGepS
元ネタの人じゃないけど以下のデータでおかしくなった。

a.txt
a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 19 2020 ddd
d x
e x Nov 19 2020 eee
f x Nov 20 2020 fff

d の行以降の日付が今日の日付になった。Ubuntu 16.04.7。
なんかデータをちょっといじると再現しなくなるような感もある。
0961946
垢版 |
2020/11/19(木) 10:41:14.25ID:uVXRNBYq
>>960
d x
という変な行も、データに入れるのか?

Windows 10, WSL2, Ubuntu 18.04 では、下のように出力された

a,2020-11-17,aaa
b,2020-11-18,bbb
c,2020-11-18,ccc
d,2020-11-19,ddd
d,2020-11-19,
e,2020-11-19,eee
f,2020-11-20,fff
0962デフォルトの名無しさん
垢版 |
2020/11/19(木) 21:37:07.41ID:ACSoydf1
>>961
そう。わざと壊れたデータで遊んでみているw

確実に再現できるバグは、ある意味治すのは易しい。
再現方法がよくわからんバグは...どうしたら再現するかを考えるのも一興かとw


あしまった、データが違ったかも。こうかな。

a x Nov 17 2020 aaa
b x Nov 18 2020 bbb
c x Nov 18 2020 ccc
d x Nov 20 2020 ddd
d x
e x Nov 20 2020 eee
f x Nov 20 2020 fff
0963デフォルトの名無しさん
垢版 |
2020/11/19(木) 21:49:05.89ID:pLwLwTYy
ちなみにdateコマンドは日付が空だと今日の日付を入れるようなので
Nov 20になる前に試すのがおすすめw
0964946
垢版 |
2020/11/20(金) 02:15:19.68ID:pwTm9Uxw
このデータでやった。
b が今日の日付になる

a x Nov 03 2020 aaa
b x
c x Nov 05 2020 ccc
d x Nov 06 2020 ddd

出力
a,2020-11-03,aaa
b,2020-11-20,
c,2020-11-05,ccc
d,2020-11-06,ddd
0965デフォルトの名無しさん
垢版 |
2020/11/20(金) 14:19:37.94ID:EGUOn9wt
>>964
うん、それは単に >ちなみにdateコマンドは日付が空だと今日の日付を入れるようなので
だと思う。

自分の環境で >>962のデータを食わせたら
a,2020-11-17,aaa
b,2020-11-18,bbb
c,2020-11-18,ccc
d,2020-11-20,ddd
d,2020-11-19,
e,2020-11-19,eee
f,2020-11-19,fff

となった。e, f で空のdの所で得た日付を使われている感じ。ちょっとおもしろい。
0966デフォルトの名無しさん
垢版 |
2020/11/23(月) 08:04:11.39ID:bkMAXdue
ループ処理をバックグラウンドで流すと500個ぐらいプロセスができて
まったく動かない。いい方法ないかな。
0969デフォルトの名無しさん
垢版 |
2020/11/23(月) 11:57:26.98ID:fPgs5Hol
10万行のループ処理にかかる時間は、while は5秒、for は9分。
それらを、awk, perl に書き直せば、0.1秒

forの時間のほとんどは、プロセスの起動・終了処理。
そもそも、bash はループ処理に向いていないので、dash を使う。
それでも、シェルスクリプトはループ処理に向いていない

awk, perl, Ruby などは、1プロセス内で処理するから、
シェルスクリプトよりも断然速い
0970デフォルトの名無しさん
垢版 |
2020/11/23(月) 12:55:10.05ID:eEk7O1Jq
古いCorei7だけどbashで0.5秒で終わるぞ?

$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.53
user 0.51
sys 0.00

dashなら0.15秒だな
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.15
user 0.14
sys 0.01
0971デフォルトの名無しさん
垢版 |
2020/11/23(月) 12:58:14.53ID:eEk7O1Jq
> forの時間のほとんどは、プロセスの起動・終了処理。

forでプロセス起動なんてしないけど?
0972デフォルトの名無しさん
垢版 |
2020/11/23(月) 13:16:27.49ID:LSu3Ppxv
>>968
どう見てもそういうシェルスクリプトを書いたとしか見えんな
バックグランドプロセスを自分で管理するのがめんどくさいとかだったら、なんか上の方のレスであったな
0974969
垢版 |
2020/11/23(月) 13:37:45.01ID:fPgs5Hol
>>970
漏れは、6年前のパソコン工房の初心者向けノートPC、
Windows 10 Home, 64 bit, 20H2(2020 秋)
WSL2, Ubuntu 18.04

CPU は、i3-3120M。2 core, 4 thread のエコモード。
8GB メモリで、

bash
real 1.53
user 1.53
sys 0.00

dash
real 0.42
user 0.42
sys 0.00
0975968
垢版 |
2020/11/23(月) 14:12:23.68ID:QFnswc7I
>>970
$ time -p bash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.30
user 0.30
sys 0.00
$ time -p dash -c 'i=0; while [ $i -lt 100000 ]; do i=$((i+1)); done'
real 0.11
user 0.11
sys 0.00

OS: Gentoo via WSL2 on Windows 10 (build 20262.1010)
CPU: AMD Ryzen 7 3700X
RAM: 16 GiB, 2666 MHz
0976968
垢版 |
2020/11/23(月) 14:12:52.26ID:QFnswc7I
多分ね,遅いのはシェルのせいじゃない。
組み方がおかしい。
0977デフォルトの名無しさん
垢版 |
2020/11/23(月) 16:34:44.84ID:iaIJT3SX
テキストファイルの中にカレントディレクトリを基準にしたファイルリストがあります。
このテキストファイルのファイルリストのファイルを~/backap/以下にディレクトリ構造を
維持したままコピーする方法を教えてください。

ファイルリストに含まれるパスは全てファイルです。ディレクトリで終わるパスは含まれません。

./file/jidori.jpg
./nikki/2020/11/01.txt
↑こんな感じのがたくさんあります
0982デフォルトの名無しさん
垢版 |
2020/11/24(火) 07:52:34.13ID:4nyZROoo
rsync -avをよく使う
0983977
垢版 |
2020/11/24(火) 18:17:20.50ID:xCsiFrs4
大変助かりました!ありがとうございます!!
0990デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:55:47.30ID:8Z169BTH
うめ!!!
0991デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:55:56.82ID:8Z169BTH
うめっ11
0992デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:03.69ID:8Z169BTH
うめあ
0993デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:11.79ID:8Z169BTH
うめい
0994デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:19.82ID:8Z169BTH
うめうえ
0995デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:26.45ID:8Z169BTH
うめえ
0996デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:36.33ID:8Z169BTH
うめめt
0997デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:45.14ID:8Z169BTH
ume
0998デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:56:52.52ID:8Z169BTH
umeru
0999デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:57:00.61ID:8Z169BTH
uue
1000デフォルトの名無しさん
垢版 |
2020/12/11(金) 08:57:08.73ID:8Z169BTH
ume
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 111日 17時間 39分 13秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況