トップページunix
1002コメント330KB

シェルスクリプト総合 その25©5ch.net

レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 転載ダメ©2ch.net2015/08/14(金) 23:42:01.51
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その24
http://peace.2ch.net/test/read.cgi/unix/1415634843/
0940名無しさん@お腹いっぱい。2017/03/01(水) 17:38:08.89
あああ、1行もマッチしないとダメだ
0941名無しさん@お腹いっぱい。2017/03/01(水) 21:54:56.86
>>932 >>935
スレチにもかかわらずありがとうございました!
0942名無しさん@お腹いっぱい。2017/03/04(土) 09:13:31.42
>>930
うちでもよく使うが、sips なんて他には無いからな

for i *.jpg; do sips -Z 200 $i -s format jpeg --out Converted/$i; done

ところでマカーな人はbash4入れてるんですかね。bash3なので、最近ココで出てくるreadarrayが使えない
0943名無しさん@お腹いっぱい。2017/03/04(土) 09:17:20.48
あー in が抜けてる
for i in *.jpg ; do な
0944名無しさん@お腹いっぱい。2017/03/04(土) 10:32:40.92
ImageMagickのconvertみたいなものか
0945名無しさん@お腹いっぱい。2017/03/04(土) 18:32:17.60
>>942
>ところでマカーな人はbash4入れてるんですかね。

Homebrewで入れてそっち使うようにしてる
0946名無しさん@お腹いっぱい。2017/03/07(火) 19:02:41.56
いつもシェルが使える環境ある?
自分は仕事ならcygwin(今は使ってない)、実機、仮想環境
プライベートならラズパイ、仮想環境かな
0947名無しさん@お腹いっぱい。2017/03/07(火) 22:43:56.07
Mac
0948名無しさん@お腹いっぱい。2017/03/07(火) 23:30:24.96
俺はスマホにzsh入れてるけど
0949名無しさん@お腹いっぱい。2017/03/08(水) 01:50:34.93
>>946
SL-Zaurus(SL-C860)を今だに現役で使っているよ
0950名無しさん@お腹いっぱい。2017/03/09(木) 02:31:23.57
そういうのって
ただ書けるだけじゃなくて動かせたり
実際にその機械で便利に使えたりするのですか?
0951名無しさん@お腹いっぱい。2017/03/09(木) 17:50:34.83
pythonの出力をシェルの変数にするにはどうやれできますか?

x=$( python test.py )
はダメでした
0952名無しさん@お腹いっぱい。2017/03/09(木) 17:58:17.55
$ cat test.py
print("Hello world!")
$ python test.py
Hello world!
$ x=$(python test.py)
$ echo $x
Hello world!
0953名無しさん@お腹いっぱい。2017/03/10(金) 09:16:11.80
あれ?そうだよなと思ったら、pythonの文字コードの扱いが変でした
シェルごめんよ
0954名無しさん@お腹いっぱい。2017/03/10(金) 13:07:41.33
pythonのせいにするのもどうかと
0955名無しさん@お腹いっぱい。2017/03/10(金) 16:08:16.57
pythonは文字コード周り落とし穴が多いすぎ
pythonのせい
0956名無しさん@お腹いっぱい。2017/03/11(土) 22:32:29.75
$@から$1を除いたものを関数に渡す方法を教えてくだしあ
0957名無しさん@お腹いっぱい。2017/03/11(土) 22:46:42.79
shiftするしかないんじゃないかな
呼出し後に元に戻したいとするとsetかな
0958名無しさん@お腹いっぱい。2017/03/11(土) 23:06:24.73
呼び出し先でshiftすりゃいいじゃん
0959名無しさん@お腹いっぱい。2017/03/12(日) 00:12:25.14
せやな!
0960名無しさん@お腹いっぱい。2017/03/12(日) 01:47:16.95
>>956
bash なら "${@:2}" でええんちゃう
0961名無しさん@お腹いっぱい。2017/03/12(日) 04:14:35.39
>>960
その発想もなかった
パラメータとして渡すならこっちの方が分かりやすいな
0962名無しさん@お腹いっぱい。2017/03/12(日) 19:17:36.56
ずっと、行の抜き出しはprcegrepを使ってたげど
sed -n -e '/hoge1/,/hoge2/p'
これでできるのを、今知って感動中。しかも、こっちの方が速い。
そのあとの置換は
sed -n -e '/hoge1/,/hoge2/p' | sed -e 's/foo/bar/g'
としかできなかったけど
sed -n -e '/hoge1/,/hoge2/p' -e 's/foo/bar/g'
で、やる方法とかであるんですか?
0963名無しさん@お腹いっぱい。2017/03/12(日) 20:09:10.06
sed -n -e 's/foo/bar/g' -e '/hoge1/,/hoge2/p'
じゃだめなの?
0964名無しさん@お腹いっぱい。2017/03/12(日) 20:49:35.74
sed -ne '/hoge1/,/hoge2/{s/foo/bar/g;p;}'
でもいけそう
0965名無しさん@お腹いっぱい。2017/03/13(月) 15:22:55.40
sedスレあるのに忘れられてそうw
0966名無しさん@お腹いっぱい。2017/03/13(月) 17:19:42.05
sed -e '/hoge1/,/hoge2/!d' -e 's/foo/bar/g'
0967名無しさん@お腹いっぱい。2017/03/13(月) 19:49:20.42
ありがとうございます
さらに速くなりました

一番最後の文字はコマンドというのを実感
0968名無しさん@お腹いっぱい。2017/03/13(月) 20:38:32.02
sedは-n使ったら負け
0969名無しさん@お腹いっぱい。2017/03/15(水) 13:36:43.93
なんで?
0970名無しさん@お腹いっぱい。2017/03/15(水) 13:37:42.13
うるさい!
俺が負けだって言ったら負けなんだよ
大人しく言う事聞け
0971名無しさん@お腹いっぱい。2017/03/15(水) 13:43:38.36
なんだそのダメな親みたいな言い分は
0972名無しさん@お腹いっぱい。2017/03/15(水) 13:45:42.22
むしろジャイアンかな
0973名無しさん@お腹いっぱい。2017/03/15(水) 16:27:57.38
pでプリントした行は元質問にもあるようにストリームを流れて行かない、
お漏らししたようなものだからね
0974名無しさん@お腹いっぱい。2017/03/15(水) 18:03:51.07
sed だと、後方参照の時にバックスラッシュでエスケープしまくることになるのがどうにも…
それで、いつの間にか perl を代わりに使うようになった。
0975名無しさん@お腹いっぱい。2017/03/15(水) 19:02:59.32
sedでできることをperlでやるのは微妙に悔しいw
0976名無しさん@お腹いっぱい。2017/03/15(水) 20:28:01.98
sed -e "s/微妙に/非常に/" >975
0977名無しさん@お腹いっぱい。2017/03/15(水) 20:45:20.13
入力なくね?
0978名無しさん@お腹いっぱい。2017/03/15(水) 20:58:18.06
考えすぎ
0979名無しさん@お腹いっぱい。2017/03/16(木) 12:44:27.48
>>977
sed -e "s/微妙に/非常に/" <975 >975
ってやって空のファイルを作ってしまったあの頃...
0980名無しさん@お腹いっぱい。2017/03/16(木) 12:47:16.46
分からんでもない
0981名無しさん@お腹いっぱい。2017/03/16(木) 16:23:09.20
最初に head/tail、grep、sort 辺りを処理の都合上先にやることが多いので、
sed の入力にはパイプを使うことが多いかな。
0982名無しさん@お腹いっぱい。2017/03/16(木) 22:48:37.43
日本語下手かw
0983名無しさん@お腹いっぱい。2017/03/18(土) 22:25:35.75
grepしてsedは素人
0984名無しさん@お腹いっぱい。2017/03/18(土) 23:27:17.30
なんで?
0985名無しさん@お腹いっぱい。2017/03/19(日) 00:04:19.09
sedだけでできるからかと
0986名無しさん@お腹いっぱい。2017/03/19(日) 00:24:39.59
grepである程度簡単なワードで絞ってからのほうが、複雑な置換は早そうだけど
0987名無しさん@お腹いっぱい。2017/03/19(日) 00:57:36.33
実験して見せられるまで性能に関する予想は信じない
0988名無しさん@お腹いっぱい。2017/03/19(日) 01:06:54.08
まぁこじらせた人にてみればその手間は実に腹立つだろうな
0989名無しさん@お腹いっぱい。2017/03/19(日) 10:07:51.17
「ひとつのことを上手くやる」から考えると、grep してから sed の方がマッチしてそう
0990名無しさん@お腹いっぱい。2017/03/19(日) 11:41:33.99
windowsのdos窓は使えるけれど、grep、sed、awk、perlなどはなし。当然他のスクリプト言語もなし。
さらに、新たなソフトのインスコはできない。
まあ、notepadでソースの編集はできる。

Eドライブには多くのフォルダがあって、中にはjpegのえろ画像が1テラ分てんこ盛り
えろ画像だけを全部Dドライブにコピーしたい。
Eドライブのフォルダを見ると8階層ぐらいのフォルダもあって、とても手作業のコピペはムリ。

にゃんとか目的を達成する方法はないであろうか?!
各位のお知恵を拝借したい。
0991名無しさん@お腹いっぱい。2017/03/19(日) 13:00:13.49
powershell でも使えばいいんじゃないかな
0992名無しさん@お腹いっぱい。2017/03/19(日) 14:12:15.82
ここじゃなくてもっと他に聞くべき所があるだろうな
0993名無しさん@お腹いっぱい。2017/03/19(日) 20:18:27.47
その環境的な制限がありつつ、エロ画像を扱うという状況が想像できないな
仕事でエロ画像を扱ってるか上司の個人環境とかかな
0994名無しさん@お腹いっぱい。2017/03/19(日) 20:31:39.22
robocopyでコピーすれば良い
0995名無しさん@お腹いっぱい。2017/03/19(日) 20:55:37.07
>>987
GNU grep + GNU awk の場合だけど、GNU awk単独よりも早いらしいぞ
http://papiro.hatenablog.jp/entry/2015/05/19/003432
0996名無しさん@お腹いっぱい。2017/03/19(日) 22:03:55.18
ドライブを別のPCからアクセス可能にしたらいいのに
0997名無しさん@お腹いっぱい。2017/03/19(日) 23:09:48.69
>>995
timeの使い方を知らないって事を自慢してどうしたいんだ?
0998名無しさん@お腹いっぱい。2017/03/19(日) 23:10:46.82
エロ画像に寛容なUNIX板
0999名無しさん@お腹いっぱい。2017/03/20(月) 10:44:19.74
>>993
昔社内から netnews が見れてたので perl でスクリプト組んでエロ画像落としまくってたのをふと思い出した
当時は普通にFDに移動して持ち帰ってたけど
1000名無しさん@お腹いっぱい。2017/03/20(月) 12:06:05.49
俺にはもうFDってのがもうすごいわ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 583日 12時間 24分 4秒
レス数が1000を超えています。これ以上書き込みはできません。