シェルスクリプト総合 ..
[2ch|▼Menu]
577:574
08/02/05 19:22:58 E60rvXpx
>>575
望みどおりの出力を得ることができました!
早い回答感謝します。
ありがとうございます。

578:login:Penguin
08/02/06 21:11:41 Qs2nEtFk
すみません、次の表現ってどういう意味なんでしょうか
($Fはlsの結果が入る)
 if expr "$F" : '[[:alunum:]_-]\+$' > /dev/null 2>&1; then ...
 特に : '[[:alunum]_-]\+$'の箇所が分かりません

自分で調べて分かったのは
 [:alunum:]が数値を表すPOSIX準拠の文字クラスであること
 :はヌルコマンド
[]が正規表現とすると[[:alnum:]_-]\+$は以下のいずれかという意味でしょうか
 数値+$
 _+$
 -+$
だとしても前半の:とのつながりもよく分からないです..

579:login:Penguin
08/02/06 21:39:32 2Q3KS/FB
そのコロンはexpr の引数であって、パターンマッチを行わせるもの。
ヌルコマンドではない。

[[:alnum]]_-]¥+$ は、
「英数もしくは _ もしくは -」([[:alnum]]_-])の繰り返し(¥+)で末尾になる($)パターン。

つまり$Fが↑のパターンにマッチするかで判断するif文だな。
出力を/dev/nullに捨てている理由は、exprの動作を調べればわかる。





580:login:Penguin
08/02/06 22:12:35 Qs2nEtFk
>>579 ありがとうございます。やっと理解できました!
exprについては、nullまたは0を返した際に0を返すという仕様のため
/dev/nullに出力していることはすぐ分かったんですが
「:」もexprの構文だったんですね
ずっとシェルのパターンマッチの構文として「:」を調べていたため
ハマってました,thx!


581:login:Penguin
08/02/07 17:29:04 SojUAx7O
リダイレクトで先頭5行目から行末から5行目前までを出力したいのですが、
??? | head -n xx | tail -n xx 以外に良い方法はあるでしょうか

582:login:Penguin
08/02/07 18:31:29 K+RTjMO0
なにをしたいのか、君の示した例は本当に目的を満足してるのか、
もういちど確認した方がよいと思われ

583:login:Penguin
08/02/08 08:15:13 D8JF1iVI
では、headとtailは使わずに。
sed -n '5,$p' file.txt | tac | sed -n '5,$p' | tac

…意義が見出せない。。。

584:581
08/02/08 15:35:34 aAYt8gpF
>>583
sedは習ってないので提出できないんですよ
他にないですか?

585:login:Penguin
08/02/08 15:38:14 Yg3sGZTq
>>584
白紙で出せば...

586:login:Penguin
08/02/08 16:08:13 z5e2UbEF
{ read a;read a;read a;read a;tac; } | { read a;read a;read a;read a;tac; }


587:login:Penguin
08/02/08 16:57:33 rygBoGE6
習っていないと使えないって、そんな小学校じゃあるまいし

588:login:Penguin
08/02/08 19:53:27 8gRlFmfx
>sedは習wwwwってwwないのwwwで提出でwwきないんですよww
>他になwwwwいですか?www
のように、wを適当にまぶすスクリプトを誰か考えてくれ。

589:login:Penguin
08/02/08 21:34:44 Z8wDJkcZ
>>588
こんなwwのを作っwwwwてみたんwwだがww
どうだろうかwww
とりあえずwwwwちゃんwwと動いてるよwwうだがwwww
どんな例外wwがあるwwかわからんwww

#!/bin/sh

CHAR='w'

insertw() {
i=0
w=`expr $RANDOM % 3 + 2`
while [ $i -lt $w ]; do
i=`expr $i + 1`
echo -n $CHAR
done
}

while read LINE ;do
while [ "$LINE" ]; do
r=`expr $RANDOM % 6 + 2`
echo -n `echo $LINE | cut -c -${r}`
insertw
r=`expr $r + 1`
LINE=`echo $LINE | cut -c ${r}-`
done
echo ""
done


590:589
08/02/08 21:45:59 Z8wDJkcZ
初心wwww者でサーセンww
$RANDwwwwOM使wwってるのwwwで本wwww当のshではww動かなwwwいはずだけど,wwwここはwwLinux板wwwってことwwwで許wwwwしてもらえるwwよね?


591:login:Penguin
08/02/09 21:05:58 sA/Tx79N
あの〜、正規表現についてお聞きしたいのですが
[a-z]で小文字のアルファベット全てにマッチですよね。
ならば
[あ-ん]でひらがな全てにマッチしますか?

592:login:Penguin
08/02/09 21:44:35 y7ESpv1X
yes

593:login:Penguin
08/02/10 00:32:01 HzElnwAK
「ぁ」はマッチしないのでは?

それはそうと、多バイト文字の正規表現って、大抵のアプリケーションで普通に使えるものなのか。
知らなんだ。

594:login:Penguin
08/02/10 01:02:27 bq0IfXwT
質問です。ファイルの対象部分に別のファイルを挿入するコマンドってありますか?

% cat file1
aaa%sbbbccc
% cat file2
ZZZ
% hoge %s file2 < file1
aaaZZZbbbccc

のような動作を期待しています。

挿入するファイルは少し長めなのでsedで置換ではできない気がしています。

awkあたりでfile1を%sが出るまで出力 -> file2を出力 -> file1の%s以降を出力
という方法を考えていますが、もし専門のコマンドがあれば教えてください。


595:594
08/02/10 01:12:39 bq0IfXwT
誤爆先でm4というのを教えてもらいました。
一旦使ってみます

596:login:Penguin
08/02/10 01:14:06 AyxHcvsn
そういうのはエディタで

597:login:Penguin
08/02/10 01:52:24 EflaE009
>>595
おまえFedoraすれにいなかったか?

598:login:Penguin
08/02/10 06:29:30 7q9QRaK3
>>594
printf "`cat file1`\n" `cat file2`

599:login:Penguin
08/02/11 23:47:20 wSzjm7y4
>>593
grep でやってみたらマッチしやがったよ。


600:login:Penguin
08/02/12 02:36:00 NhGbxXsu
文字列として検索できるということと、
全角文字も一文字として扱える、というのとでは意味がぜんぜん違う。

601:login:Penguin
08/02/13 03:57:10 Z8x6psMH
[あ-ん]と[\xe4\x1c-\xe4\x5f]ではまるで別物だしな(コードは適当)


602:login:Penguin
08/02/13 23:44:52 3LjmFUst
#スレ違いだが。
MS-Windowsとの可搬性に最も富むスクリプトは何ですか?
ただし、cygwin環境とperlは除外して。

603:login:Penguin
08/02/13 23:58:15 jHUDsaVW
>>602
javascriptに一票

604:login:Penguin
08/02/14 00:56:22 axFZQkw/
>>602
awk,ruby,Python つーかなんでperlダメなの?
たしかにWinのperlめんどいけどね。

605:login:Penguin
08/02/14 20:13:50 oi3zsBt5
ディレクトリにあるmp3ファイルを1行に3つずつ番号付きで表示して
指定されたファイルを再生するスクリプトを考えてみました。
これだとファイル表示の見た目がいまいちなんですが、カラムを揃えて
表示するようなうまいやり方はありますか?
i=1
for file in *.mp3
    do
        #3カラムで出力する
        x=`expr $i % 3`
        if [ $x -eq 0 ]
            then echo -e "\033[1;31m$i\033[0m.$file"
        else
            echo -en "\033[1;31m$i\033[0m.$file "
        fi
        a[i]=$file
        (( i=i+1 ))
    done
echo -n "number? >"
read n
if [ -f "${a[n]}" ]
    then mplayer "${a[n]}"
else
    echo "ファイルがありません"
fi

606:login:Penguin
08/02/14 21:53:57 gBoeKdqH
>>605

#!/bin/sh
FS=`zenity --file-selection`
#このままだと動画なんかもいけるけど、どうしても*.mp3のみにしたい場合は↑行を
#コメントアウトして↓行を有効にする
#FS=`ls *.mp3 | zenity --list --column "Files"`
if [ -z "${FS}" ]
then
 exit
fi
mplayer "$FS"

なんつってってねw

607:login:Penguin
08/02/14 22:01:12 vsXOhty3
zenityってなんだろーと思ってググったら……反則すぎ。


608:login:Penguin
08/02/14 22:52:41 fZu2vsjD
>>604
perl.exeの他に色々MS-Windows側に入れなきゃならないものがあるので可搬性に欠けるという理由を考えてみましたが、実は嫌いなだけです。

>>605
3列にこだわらないのなら、bashのselectはどうでしょう。
#!/bin/bash
select name in *.mp3
do
  echo "mplayer ${name}"
  #break
done

609:login:Penguin
08/02/15 02:46:55 4QUqq28I
>>605
printf で頑張るという選択肢もある。

610:605
08/02/15 19:02:00 BuE7cyMU
>>605の件ですが、レスしてくれた方々、ありがとうございます。
selectを使うのが簡単でイメージどおりなので、それでいきたいと思います。

611:login:Penguin
08/02/16 14:41:12 rUKDlild
久しぶりに来たけど相変わらず
キモいね


612:login:Penguin
08/02/16 14:52:30 TWToK0Vy
シェルに閉じこもってるスレですから

613:login:Penguin
08/02/16 15:09:40 hFdiJNir
ちょっとは環境変数も気にしろよ

614:login:Penguin
08/02/16 15:14:02 TWToK0Vy
export KIMOI=false

615:login:Penguin
08/02/16 15:25:59 hFdiJNir
$ export KIMOI=false
> if [ $KIMOI ]; then
> echo kimoi
> else kimokunai
> fi
kimoi

となります.助けてください><

616:login:Penguin
08/02/16 16:57:40 TCXFbGKj
釣られてやるが
if $KIMOI; then


617:login:Penguin
08/02/16 19:13:59 TWToK0Vy
いやいや、キモイとかキモクナイを超越することこそが答なのだよ。

 export KIMOI=

が正解なのだ。


618:login:Penguin
08/02/17 01:08:38 iw9ufgAV
>>615-616
なぜそうなるか素人の私にも解説してくだされぇ〜

619:login:Penguin
08/02/17 01:11:52 slw092IT
>>616 素で知らなかった.ありがと!

620:login:Penguin
08/02/17 01:27:34 PyTcVmai
/usr/bin/[≒/usr/bin/test

621:login:Penguin
08/02/17 03:00:02 tnXxiXa8
>>618

if文やwhile文の条件部に書くのは、実はコマンド。
コマンドの終了コードが0なら条件が成立したとみなされる。
で、true(0を返す)やfalse(1(非0)を返す)というコマンドがあるわけだな。
ちなみに [ もコマンドだ。


622:login:Penguin
08/02/17 09:32:32 OGJD7PPY
みんな釣られ過ぎ…
$KIMOIに"false"という文字列を代入してるだけ。

623:login:Penguin
08/02/17 14:07:35 4A7UiB6D
>>612
俺らはゴーストですか

624:login:Penguin
08/02/17 14:21:15 slw092IT
>>623
ネットは広大だよな

625:login:Penguin
08/02/17 14:29:38 uY7SK9GA
>>623
否、貴腐人間かもw


626:login:Penguin
08/02/17 14:38:41 slw092IT
>>625
元ネタwkrn

627:login:Penguin
08/02/17 14:42:27 uY7SK9GA
>>626 「貴腐老人」でggrks


628:login:Penguin
08/02/17 14:44:26 slw092IT
>>627
tnks

629:login:Penguin
08/02/18 07:12:54 AGIm4SRV
zenity でファイルの選択をさせるのに、最初に任意のフォルダを開くにはなんと書けばいいのか教えて下さい。

630:login:Penguin
08/02/18 11:55:16 VgIMGwkB
カレントディレクトリを開くみたいだから、サブシェルを使ってこんな感じでどうかな
(cd /; zenity --file-selection)

631:login:Penguin
08/02/18 13:16:10 AGIm4SRV
>>630
ありがとうございます。
やってみます。

632:login:Penguin
08/02/19 08:50:21 90boQwVS
シェルスクリプトを覚えるとなにが出来るようになるんですか?

633:login:Penguin
08/02/19 09:00:32 7ADZuvq7
>>632
ルーチンワークで楽できる(場合がある)

634:login:Penguin
08/02/19 16:05:41 VrKwqWf/
>>632
作業の自動化や、例えばユーザを100人登録しないといけないとか言う、膨大な作業を
物凄い速度で短時間で終わらせる事が出来るようになるとか。

635:login:Penguin
08/02/19 17:25:49 90boQwVS
>>633>>634
ほほぅ、ありがとうございます。

636:login:Penguin
08/02/19 19:54:38 oWc/fsPo
ほほうって、コンピュータに仕事をさせるという観念のない人なんだろうか。
高級な紙と鉛筆だとしか思ってなさげな人。たまにいるけど……。

637:login:Penguin
08/02/19 19:56:54 7ADZuvq7
魔法の箱だと思ってるよりマシだと思う

638:login:Penguin
08/02/19 23:07:22 VrKwqWf/
コンピュータは ある機能を実現させる為の方法(アルゴリズム)を示してやれば
どんなにそれが重労働だろうが難しい計算をしないといけなかろうが、
忠実に高速かつ正確、大量に実行させる事が出来るから凄いよ・・・。

ただし、その仕事の仕方を教える(アルゴリズムを教える)のがかなり苦労するんだけどな・・・。

639:login:Penguin
08/02/20 03:07:58 eOYCs3Nz
基本的に人間がやってもできることを高速ですることしかできないということを知らない人が多すぎる

640:login:Penguin
08/02/20 03:37:12 Z0UaqwNw
それは、一秒間に3ギガ回も足し算したり、地球の裏側に光の速度で手紙を届けたりなんつーのは
基本的に人間には絶対できない、ということを知らない者は>>639だけだというだけの話かと。

641:login:Penguin
08/02/20 04:33:00 H+YlTABW
君も頭悪いな。
639は高速で、と書いてあるんだから、「速度を問わなければ」人間が…と
読むのが妥当という答にしかならないぞ。
どうせそういう突っ込みするなら空間計算量でやればよかったのに。

642:login:Penguin
08/02/20 07:24:32 kPfB9gdm
理論ばっかりのたまって生産性の無い人ってよくいるよね。

643:login:Penguin
08/02/20 08:22:42 TBsfl6zQ
まとめ。

Q) シェルスクリプトを覚えるとなにが出来るようになるんですか?
A) 理論ばっかりのたまって生産性の無い人ってよくいるよね。

644:login:Penguin
08/02/20 09:09:29 s2YtVBn2
>>632
シェルスクリプトでやりたいと思ったこと。

645:login:Penguin
08/02/20 10:22:00 0BB6Gw/L
俺は…彼女にパイズリして欲しいな…。
乳はAAだけど orz

646:login:Penguin
08/02/20 10:22:28 0BB6Gw/L
>>645
誤爆った。正直スマンかった。

647:login:Penguin
08/02/20 10:47:15 VHJ6cFjQ
>>645
基本的に彼女ができないことなのでシェルスクリプトでもできません。

648:login:Penguin
08/02/20 11:22:35 eOYCs3Nz
>>647
AAでもいいということなので,アスキーアートでおっぱいを表現することならシェルスクリプトで可能です
さらに最近のターミナルエミュレーターはアンチエイリアスがきいてるのでなめらかですよ

649:login:Penguin
08/02/20 11:31:04 Z0UaqwNw
すごいな。>>641は地球の裏側に手紙を届けたりなんてことが「ゆっくりならできる」そうだ。
できるというなら精々一生をかけて歩いて船をこいで手紙を届けにいって、それを証明してほしいものだ。
コンピュータという人間が使うモノが、人間以上の方法(アルゴリズムなどの知性)を知らないのは当然のことだが
最近ではその知性すら、コンピュータを使ったシミュレーション解析などで
得ることが増えているのが現実だったりするわけで。特に知の最先端ほどそうだ。
もはや人類はコンピュータを使わないと新しい知識を得ることすら「できない」状況なんだけどね。
そういう現実が見えない人はやっぱり自分の納得を唯一の判断基準とする文系人かな。
人間は遠くのものが見え、遠くの人と話し、より多くの知識を得、共有できるようになった。
100年前に比べたら、ほんとうに夢の魔法かコミックの世界だ。コンピュータはほんとに魔法の箱みたいじゃないか。
そのセンスは逆にあまり間違っていない気がするけどな。
「高度に進んだ科学技術はもはや魔法と見分けがつかない」アーサー・C・クラーク



650:login:Penguin
08/02/20 12:06:00 eOYCs3Nz
>>649
日本語でおk
電報というものがあるんだが最近のゆとりは知らないのか?

651:login:Penguin
08/02/20 12:14:29 pg37fRgc
ゆとり言いたいだけちゃうんかと

652:login:Penguin
08/02/20 12:23:41 XajlgLxx
ネタはよそでやっとくれよ。

653:login:Penguin
08/02/20 16:28:17 vrkF+BtG
このスレの>>640>>641の意見が興味深い。面白いな・・・。

>>648
そういうシェルスクリプト作って公開してよwwwwぜひ実行してみたい・・w

654:login:Penguin
08/02/20 19:29:13 7TuVNRao
先日の芥川賞受賞作が>>649の文章に似てる。
句点から次の句点まで地球半周ぐらいあって、だらだらと続く感じが。
URLリンク(sankei.jp.msn.com)

655:login:Penguin
08/02/21 06:19:36 FDbXS9I4
>>649
こういう無駄な長文を書ける才能には素直に感心するよ。

656:login:Penguin
08/02/21 12:33:09 xpu03eg4
時間を持て余してるんだろ?

657:login:Penguin
08/02/21 18:35:15 oj1Q2W6E
ある意味うらやましい知性だ。

658:login:Penguin
08/02/24 10:15:17 RUTtO6AQ
slコマンドってなかった?画面いっぱいにSLを表現
あれはシェルスクリプトではないから違うか・・・。

659:login:Penguin
08/02/24 11:38:47 kyu4Np6c
>>658
つ www.tkl.iis.u-tokyo.ac.jp/~toyoda/

660:login:Penguin
08/02/24 13:02:41 FjGZZj6V
bashです。

cdするたびに一緒にlsもして欲しいんですが、どうやって書いたらいいでしょうか?
aliasだとうまくできないです。


661:login:Penguin
08/02/24 13:04:14 UaS7yo8D
alias cls='cd $1 && ls'

662:login:Penguin
08/02/24 13:21:41 CzUoXlF2
clsといったらCLear Screenだろうに

663:login:Penguin
08/02/24 13:24:30 UaS7yo8D
そうなのか。うちにはそんなコマンドないって言われたもので。

664:login:Penguin
08/02/24 14:04:47 I77Y2jQo
そりゃDOSのコマンドだからな。

665:login:Penguin
08/02/24 14:44:06 FjGZZj6V
>>661
できないみたいです。

カレントディレクトリが切り替わりません。


666:login:Penguin
08/02/24 14:53:32 UaS7yo8D
>>665
うちでは動作確認したんだが・・・なんでだろね。

667:login:Penguin
08/02/24 14:54:08 UaS7yo8D
あ、ほんとだ、切り替わらないねw

668:login:Penguin
08/02/24 15:09:41 I77Y2jQo
PROMPT_COMMAND='if [ "$PWD" != "$PWD2" ]; then ls; PWD2="$PWD"; fi'

669:login:Penguin
08/02/24 15:13:49 uTpa9gVS
>>667
ぢゃあ関数にしちゃうとか。
function cls {
cd $1 && ls
}

670:login:Penguin
08/02/24 15:23:08 UaS7yo8D
cdはシェルの内部コマンドだから親プロセスには反映されないんだねえ。
#!/bin/sh
cd $1
ls
として、foo.shとして、
alias cds='. foo.sh'

かなあ。動作確認はしたw

671:login:Penguin
08/02/24 15:36:14 FjGZZj6V
できればclsじゃなくてcdでやりたいです。

>>669,670 でcdにするとなぜか動かない。
でも参考になりました。

>>668
わかんないです。

672:login:Penguin
08/02/24 15:41:52 FjGZZj6V
#!/bin/sh
'cd' $1
ls
として、foo.shとして、
alias cd='. foo.sh'

でできました。(・∀・)イイ!
ありがとう。

673:login:Penguin
08/02/24 15:42:06 Sa+MU/+b
cd() {
   builtin cd $1 && ls
}

674:login:Penguin
08/02/24 15:46:14 I77Y2jQo
( ゚д゚)……

675:login:Penguin
08/02/24 15:47:40 UaS7yo8D
>>673
ビルトインか。やっぱりman読まないとダメだな。
ありがとう。

676:login:Penguin
08/02/24 15:54:18 l3aT8ww/
ほう、すげっ


677:login:Penguin
08/02/24 15:55:21 FjGZZj6V
>>673
それも(・∀・)イイ!
トン

678:login:Penguin
08/02/24 16:08:01 OZdK2Ezs
668は逆にわかりやすいと思うが・・・なぜ分からぬ

679:login:Penguin
08/02/24 16:57:30 M1aIs9jI
>>659
slねぇ・・・Vine 3.2だとmakeしてもエラーが出てmake出来ないんだけど・・・?
apt-get install build-essential は入ってる環境です。

680:login:Penguin
08/02/24 21:43:32 X4+soAGj
>>679
libncurses.soのことか?

681:login:Penguin
08/02/24 22:41:47 WU8Eis2Q
>>673
cd に -P とかオプションつけると機能しなくなるぞ。

cd() { builtin cd "$@" && ls; }

682:login:Penguin
08/02/24 22:44:30 CzUoXlF2
>>673,>>681
それしばらく使ってみるとわかると思うけど、
そのままではナイーブすぎて少し不便だよ。

zshで同じようなことやってるけど、次の点は考慮した方がいいです。
・サブシェルで実行されたときにはlsしない
・行数が多すぎるときは適当な長さで切り、省略した旨を表示

683:login:Penguin
08/02/25 12:48:54 fTf5K0mT
同一内容のファイルを調べるシェルスクリプトなんだけど、過去にここかUNIX板の方で出てたっぽい。
結局やらず仕舞いだったようだし、どうせならシェルスクリプトの勉強がてらやってみようとおもった。

作りたい理想は以下のとおり
 ・コマンドラインでオプション指定を行い、検索ディレクトリとサブディレクトリへの再帰検索をするかどうか、あとファイルサイズ閾値を指定できる
 ・走査しているディレクトリにあるファイルパス&ファイルサイズのペアをリストとして吐く
 ・ファイルサイズ閾値未満で、ファイルサイズが一致したものに対してmd5sumを実行し、両方が同一のハッシュを吐いた場合、表示する。
 ・ファイルサイズ閾値を設定する理由はmd5sumが時間がかかりそうだから。閾値以上のサイズ一致ファイルはmd5sumすることなく表示する。



684:login:Penguin
08/02/25 12:52:01 fTf5K0mT
ちなみにサブディレクトリの再帰検索をせず、指定したディレクトリの全てのファイルのハッシュ値を比較して表示するだけなら

#!/bin/sh
md5sum $1/* | uniq -D --check-chars=32 | sed 's/^[0-9a-f]* \*//g'

上のだけで済むかな。標準エラーがうざいけど・・・
まずはディレクトリの再帰検索について質問したいところです。

685:login:Penguin
08/02/25 12:55:37 fTf5K0mT
あ、uniqの間にsortを入れてあげるとより親切か
うちの場合はwgetで自動保存したファイルの整理だから、ファイル名が必然的に「DLファイル名+.連番」だから気にならないけど
まったく違うファイル名かつ内容は同一ってときに、ハッシュ値でsortしてあげていた方がいいよね
そう考えたらsedでハッシュ値をわざわざ消す必要もないか・・・

md5sum $1/* | sort | uniq -D --check-chars=32

686:login:Penguin
08/02/25 12:57:54 fTf5K0mT
再帰検索はこの場合、find $1でファイルリストを列挙してからreadで"ls->ファイルサイズ取得"やら"md5sum"やらした方がいいのかな?

687:login:Penguin
08/02/25 13:38:12 fTf5K0mT
不恰好だけどサブディレクトリまで調べて、全てのファイルにmd5sumして表示するのはこんな具合か・・・

#!/bin/sh
TMPFILE="filelist"
touch $TMPFILE
find $1 | while read FILENAME; do
if [ -f "$FILENAME" ]; then
md5sum "$FILENAME" >> $TMPFILE
fi
done
sort < $TMPFILE | uniq -D --check-chars=32
rm $TMPFILE

もうちょっとスマートにならないかなあ・・・ あとユニークなサイズのファイルはmd5sumさせたくないなあ

688:login:Penguin
08/02/25 13:47:58 pu40lUxS
書いてみた。

#!/bin/sh
# finddup.sh -- find . | finddup.sh
while read -r FILENAME
do
    [ -f "$FILENAME" ] &&
        printf "%14d:%s\n" `stat -c %s "$FILENAME"` "$FILENAME"
done | sort | uniq -D -w14 | cut -b 16- |
xargs md5sum | sort | uniq -D -w32

689:login:Penguin
08/02/25 13:53:38 pu40lUxS
uniq -f のほうが良さそうだね

690:login:Penguin
08/02/25 13:57:12 ATO0A7OZ
>>687
find . -type f -print0 | xargs -0 md5sum | sort | uniq -D -w32

691:login:Penguin
08/02/25 14:17:36 fTf5K0mT
>>688
ありがとう!
あ、ただファイルやディレクトリ名にスペースが入るとmd5sumにしっかり渡せないみたいです
bash on cygwin環境だとWindowsの「コピー (2) 〜 hoge.txt」という名前が恨めしい

>>690
出力結果同じだΣすげえ
ちょっとman読んでこよう・・・

692:login:Penguin
08/02/25 14:23:38 pu40lUxS
xargs --delimiter "
" md5sum
でどうかな。ちゃんとテストしなきゃだめだね
まあ改行文字を含むファイルがあるとだめなんだけど、面倒だから他の言語でやらせたほうがいい

693:login:Penguin
08/02/25 14:26:43 ATO0A7OZ
>>692
>>690

694:login:Penguin
08/02/25 14:27:32 pu40lUxS
>>693
全部のファイルにmd5sumかけたら遅いだろ

695:login:Penguin
08/02/25 14:31:42 fTf5K0mT
あ、>>688のxargs md5sumを>>690のようにxargs -0 md5sumにすればOKなのかな

696:login:Penguin
08/02/25 14:38:34 ATO0A7OZ
>>695
んで、printf 側でも \n じゃなく \0 を使うようにする。

697:login:Penguin
08/02/25 14:39:51 pu40lUxS
uniqとcutはどうするよ

698:login:Penguin
08/02/25 14:43:11 fTf5K0mT
printfで囲ってやればイケました(`・ω・´)

#!/bin/sh
# finddup.sh -- ./finddup.sh target-path
find $1 | while read -r FILENAME
do
[ -f "$FILENAME" ] &&
printf "%14d:\"%s\"\n" `stat -c %s "$FILENAME"` "$FILENAME"
done | sort | uniq -D -w14 | cut -b 16- | xargs md5sum | sort | uniq -D -w32

699:login:Penguin
08/02/25 15:21:01 zYqxhFYE
久々にまともな流れだな

700:login:Penguin
08/02/25 16:57:52 fTf5K0mT
ついでに以下のような動きが出来ないか色々試してみています。
どうも二進も三進も行かない

$ ./findup.sh ~/pic/jun.2chan.net/

2件の一致ファイル:8f7c1e2adb45adbfdb4d86adb1b9e894--------------------------
~/jun.2chan.net/b/src/1192805081129.jpg
~/jun.2chan.net/b/src/1192805081141.jpg
-------------------------------------------------------------------------------
~/jun.2chan.net/b/src/1192805081129.jpgを削除しますか?[y/N/a]
~/jun.2chan.net/b/src/1192805081141.jpgを削除しますか?[y/N/a] y
~/jun.2chan.net/b/src/1192805081141.jpgを削除しました。

3件の一致ファイル:6fc4bdc4bc3bb06882bc98d9cbeb60c3--------------------------
~/jun.2chan.net/b/src/1192800164913.jpg
~/jun.2chan.net/b/src/1194189136460.jpg
~/jun.2chan.net/b/src/1194189137115.jpg
-------------------------------------------------------------------------------
~/jun.2chan.net/b/src/1192800164913.jpgを削除しますか?[y/N/a] y
~/jun.2chan.net/b/src/1192800164913.jpgを削除しました。
~/jun.2chan.net/b/src/1194189136460.jpgを削除しますか?[y/N/a] y
~/jun.2chan.net/b/src/1194189136460.jpgを削除しました。

↑同一として列挙されたパスの残りが1になると削除せず次へ

701:login:Penguin
08/02/25 17:00:46 ATO0A7OZ
>>700
そこまで行くとシェルスクリプトには荷が重いんじゃないか?

702:login:Penguin
08/02/25 17:10:48 fTf5K0mT
>>701
以下の点でハードルがあがってるみたいですね

・一致したファイルのグループ分け
・ファイルを一つだけ残して削除した場合、残りの1ファイルは削除しない

列挙した全ファイルに対して、質問→削除というのは簡単にいけそうな感じ。
自分の知識だけで無理と判断して投げるのはアレだと思ったんだけど、やっぱ難しいかなあ

703:login:Penguin
08/02/25 18:09:02 pu40lUxS
#!/bin/bash
# askdelete.sh -- find . | finddup.sh | askdelete.sh
# よくテストされてませんので注意
TMPF=`mktemp /tmp/askdelete.XXXXXX`
trap 'rm $TMPF' 0
CURHASH=
COUNT=0
(cat; echo DUMMYHASH /dev/null) |
while read -r HASH FILENAME; do
    if [ "$CURHASH" ] && [ "$CURHASH" != "$HASH" ]; then
        echo "------------------------------"
        echo "$COUNT 件の一致ファイル:$CURHASH"
        tail -n $COUNT $TMPF | cut -b 33-
        echo "------------------------------"
        tail -n $COUNT $TMPF | while read -r HASH FILENAME; do
            [ $COUNT -eq 1 ] && break
            echo -n "$FILENAME を削除しますか? [yN] "
            while read ANSWER
            do
                case "$ANSWER" in
                [yY]) echo rm "$FILENAME"
                      COUNT=`expr $COUNT - 1` ;;
                esac
            done < <(head -1 /dev/tty)
        done
        COUNT=0
    fi
    echo $HASH $FILENAME >>$TMPF
    CURHASH=$HASH
    COUNT=`expr $COUNT + 1`
done

704:login:Penguin
08/02/25 18:12:29 pu40lUxS
done < <(head -1 /dev/tty) とか、絶対おかしいよこれ。
違う言語で書き直したほうがいい。

705:login:Penguin
08/02/25 18:17:46 fTf5K0mT
おおすげええΣ
ちょっとテストしてみます!

706:login:Penguin
08/02/25 19:20:15 pu40lUxS
#!/bin/sh
# askdelete.sh -- find . | finddup.sh | askdelete.sh
TMPF=`mktemp /tmp/askdelete.XXXXXX`
trap 'rm -f $TMPF' 0 1 2 3 15
CURHASH=
COUNT=0
(cat; echo DUMMYHASH /dev/null) |
while read -r HASH FILENAME; do
    if [ "$CURHASH" ] && [ "$CURHASH" != "$HASH" ]; then
        echo "------------------------------"
        echo "$COUNT 件の一致ファイル:$CURHASH"
        tail -n $COUNT $TMPF
        echo "------------------------------"
        tail -n $COUNT $TMPF | while read -r FILENAME; do
            [ $COUNT -eq 1 ] && break
            echo -n "$FILENAME を削除しますか? [yN] "
            while read ANSWER; do
                case "$ANSWER" in
                [yY]) echo rm "$FILENAME"
                      COUNT=`expr $COUNT - 1` ;;
                esac
                break
            done < /dev/tty
        done
        COUNT=0
    fi
    echo $FILENAME >>$TMPF
    CURHASH=$HASH
    COUNT=`expr $COUNT + 1`
done
すこしよくなった
参考になる URLリンク(www.nurs.or.jp)

707:login:Penguin
08/02/25 20:58:36 NDOa2UbC
理想的な流れだ。


708:login:Penguin
08/02/26 01:26:57 Knz7qJ2h
>>706
サブシェルをわざわざ使う必要は無いのでは?

--- (cat; echo DUMMYHASH /dev/null) |
+++ { cat; echo DUMMYHASH /dev/null; } |

709:login:Penguin
08/02/26 01:31:17 V2S90oTo
こんなのじゃ駄目?

find . -type f -print | xargs md5sum | sort | while read i
do
 set -- $i
 test -e .$1 && rm -i $2
 touch .$1
done

削除して残りが1つなら消さずに次、ということは最初の1つは
無条件で残して、2つ目以降についてのみ rm -i で削除確認すれば
いいんだよね?

記憶用に .<md5sum> なマーカ作ってるけど、ここは md5sum な
ダミー環境変数の方がいいかも。

710:login:Penguin
08/02/26 08:30:35 V4Ca66lJ
>>709
全ファイルにmd5sumしたら遅くならない?

711:login:Penguin
08/02/26 08:46:21 M2OUW+0j
>>708
パイプを使うと結局はサブシェルが起動されるんだから () のほうがわかりやすいと思うよ

712:login:Penguin
08/02/26 09:53:07 jk2VB7eG
>>710
どうせシェルスクリプトなんて使い捨てなんだし
多少遅くてもいいんじゃない?
実行時間の長さより
思いついたことをちゃちゃっと実行できる手軽さが大事でしょ。

713:login:Penguin
08/02/26 10:56:04 V4Ca66lJ
>>712
もっともな意見だと思うが、肝心なことを棚に上げてるな
シェルスクリプトの本質は処理を効率化するための機能なんだから、
手軽に加えて「より早くスマートに処理」できる方がいいだろうよ

どうせ使い捨てとか言い出したら、いつまで経っても遅くて低機能なスクリプトしか書けないぜ?
まあせっかくいい方向で流れてるから、俺も最適化してみるか。

714:login:Penguin
08/02/26 15:09:02 KrvpwwSS
手作業で30分かかる作業を、わずかワンライン5秒で済ます。
どうよ、この快感、すごいよ、俺!!
ただしスクリブト書きに3時間かかるけどなっ!!、
みたいな・・・・


715:login:Penguin
08/02/26 15:18:25 jk2VB7eG
5分で書いて実行時間3分にできればそれでおkだよな。
その作業を200回繰り返さなきゃいけないなら
3時間かけて書いて5秒に短縮してもいいけど、
そういうのはシェルじゃなくて別な言語を使った方がいいと思う。

716:login:Penguin
08/02/26 16:04:42 V4Ca66lJ
>>714
良いスクリプトを早く書けるスキルを養うといった考えはないのかよw
まぁ価値観が違うなら仕方ないが

>>715
言いたいことは分かるし仕事では俺も同じスタンスだ。モトが取れない作業をするのはアホだと思う。
さらに>>1にあるようにPerlやPythonを使ってもいいと書いてあるように、別にシェルスクリプトに固執はしてないさ。
ただID:fTf5K0mTみたいに質問を丸投げせずに分かってないながらも自分で試してみている奴も居るんだから
「どうせ使い捨て」や「パンがなければケーキを」じゃなくて、しっかりした見本を見せてやろうぜw・・・と思ったんだ。

勝手に限界を作っちゃダメさ・・・!

717:login:Penguin
08/02/26 17:08:11 KrvpwwSS
頑張るところが・・・まっいっか。人それぞれだな。

718:login:Penguin
08/02/26 17:30:17 DxWnmOPN
>>717
茶化すだけならWindowsに切り替えてフリーソフトスレにでも行け。
同一ファイル発見ソフトなんていくつもあるから。
自分で作ろうと思わん奴はウザイだけだ。

719:login:Penguin
08/02/26 22:37:31 ecwr7n8r
Windowsに切り替えて同一ファイル発見ソフトを探すってのもこれまた手間だよな

720:login:Penguin
08/02/27 00:57:44 k4ecn/gW
ああそういう意味か。
Linuxならawkでもperlでもpythonでもgccでも大概入ってんだろうになんで
>Windowsに切り替えてフリーソフトスレにでも行け
なのかマジで理解できなかった。
なるほどな、そういう考え方もあるか。これは考えが及ばなかったな。
まぁうちext3だしなぁ。

721:login:Penguin
08/02/27 02:09:44 5Pe1iZtE
>>711
サブシェル一個より分かりやすさを重視、ってのも分かるが
プロセスを fork するコストはバカにできないぞ。
たった 10 回でもこれだけ差が出る。

$ time for i in 0 1 2 3 4 5 6 7 8 9 ; do { :; } ; done
real 0m0.001s
user 0m0.010s
sys 0m0.000s

$ time for i in 0 1 2 3 4 5 6 7 8 9 ; do ( :; ) ; done
real 0m0.221s
user 0m0.140s
sys 0m0.140s

今回のはともかく、ループの中で無駄なサブシェル起こすと
かなり処理速度に効いてくるから、「より早くスマートに処理」を
目指すなら気にした方がいいと思うよ。

722:login:Penguin
08/02/27 12:04:07 5xPFitgJ
>>721
そうじゃなくて、パイプではサブシェルが起動されるでしょう?
$ { FOO=foo; echo $FOO; } | cat
foo
$ echo $FOO
$

723:login:Penguin
08/02/27 23:04:12 6K2aGQ5h
>>722
popenってfork & execvじゃなかったっけ?

724:login:Penguin
08/02/28 01:04:44 2c894vLr
$cat a001
abc

$cat a002
def

$cat a003
ghi

という内容の連番ファイルがあるときに、
a001,a002,a003ファイルそれぞれの先頭に
自身のファイル名を追記していくにはどのようにすればいいでしょうか?

$cat a001
a001
abc

$cat a002
a002
def

$cat a003
a003
ghi

725:login:Penguin
08/02/28 01:27:48 k7I0oIXn
for a in *; do
echo $a > temp
cat $a >> temp
mv temp $a
done

726:login:Penguin
08/02/28 01:53:39 2c894vLr
>>725
できましたありがとうございます!!

727:login:Penguin
08/02/28 11:40:05 xnWdeCI1
csvの編集をしているのですがカンマを含むデータがある場合に特定の列を削除するいい方法はないでしょうか?

例:
編集前) aaa,bbb,"ccc,ddd","eee",ff

編集後) aaa,"ccc,ddd",ff

カンマを含むデータは必ずダブルクォーテーションで囲まれているのですが
どの列にカンマを含むデータが存在するかは不明です。
192の方法だと特定の列は出せるのですが、複数列を表示することができないので。。。

728:login:Penguin
08/02/28 11:45:53 sfXUxgeO
>>727
シェルスクリプトでがんばるより↓あたり使ったら?
URLリンク(blog.livedoor.jp)

729:login:Penguin
08/02/28 12:17:28 DWKM9TyE
>>727
無駄にがんばってみた。PerlとかSQLiteとか使った方が絶対いい。
#!/usr/bin/awk -f
BEGIN {OFS=",";}
function csplit(s,a,c,f,i,j,k){delete a;for(i=j=1;;i++){
c=substr(s,i,1);if(c==""){a[k++]=substr(s,j,i-j);break;}
else if(c=="\""){if(f>0){if("\""==substr(s,i+1,1))i++;
else f=0;}else f=1;}else if(c==","&&f==0){a[k++]=substr(s,
j,i-j);j=i+1;}}return k;}
{n=csplit($0,array);print array[0],array[2],array[4];}

730:login:Penguin
08/02/28 20:37:03 VzdvBwjj
吐きそうだ。
字下げを知らないやつがまだこの世にいたのか。

731:login:Penguin
08/02/28 20:53:53 k7I0oIXn
>>730
じゃあお手本をちょっと見せてくれ

732:login:Penguin
08/02/28 22:39:21 VzdvBwjj
死ぬまで>>729記法で頑張りゃいいんじゃね?
それも個性だ。

733:login:Penguin
08/02/28 22:40:23 gxJgMbC8
敗北宣言はええ

734:login:Penguin
08/02/29 00:47:32 1XKkNNaQ
2ch に貼る時気をつけないと空白スペース詰められちゃうよね

735:login:Penguin
08/02/29 01:30:01 Pgw8LnNi
そこで&nbsp;

736:login:Penguin
08/02/29 01:41:57 bnE90VmD
行末にタブがある行を検索しようと
egrep '\t$'
としてもマッチしません。awkだと
awk '/\t$/'
でマッチするのですが、grepだとどう書けばいいのでしょうか?

737:login:Penguin
08/02/29 01:59:08 Pf9U77bc
元々、\tなどのメタキャラクタはgrepにもawkにもなかった。
GNU awkがPerlの影響を受けて拡張しただけ。

738:login:Penguin
08/02/29 02:10:07 bnE90VmD
そうなのかー・・・ちょっとしょぼーん。拡張されてもいい感じなんだけどね。
grep sed awk ぐらい正規表現は統一して欲しかったorz

739:login:Penguin
08/02/29 08:36:03 qSBWA6nK
タブを¥tと書きたかった理由が
シェルからコマンドラインにタブを打とうとして補完機能に取られるから、
であれば、Ctrl-V TAB でたぶんOK。



740:login:Penguin
08/02/29 09:40:38 HrPH8ECW
くだ質からこちらに誘導されたので、こちらで質問させて下さい。

ド素人質問で悪いのですが

$ cat text1.txt
1
2
3

$ cat text2.txt
3
4
5

という二つのファイルがあるとして、それを1行ずつ割り算したいのです。
結果としてこういう形になれば満足です。

$ cat result.txt
0.33
0.50
0.60

どのように記述すれば良いのでしょうか、シェルは普段bashを使っていますが、
もちろんshでも構いません。宜しくお願いします。

741:login:Penguin
08/02/29 09:42:18 /PNY/URb
>>740
ぱっと思いついたもの。

( echo 'scale=2' ; paste -d/ text1.txt text2.txt ) | bc

742:login:Penguin
08/02/29 09:48:46 HrPH8ECW
>>741
早速ありがとう御座います。こんな結果になりました。

.33
.50
.05
(standard_in) 5: parse error
53
4
5

pasteってこういうときにも使えるんですね。
parse errorとかbcとか知らないものも調べてみます。

743:740
08/02/29 09:58:48 HrPH8ECW
>>741
すいませんでした、エラーは自分の不備によるものでした。
きちんと結果表示されたので満足しています。ありがとう御座いました。

744:login:Penguin
08/02/29 10:03:24 Mcdovrgg
スクリプトで2台のDebian間を rcp でコピーしようと思っています。
expect を使って、スクリプトを作成し、それがうまく動作するところまでは
こぎつけたのですけれど、cronに登録すると動かなくなってしまいます。。。。

どうすれば解決するでしょうか?アドバイスをいただけると嬉しいです。

ちなみにスクリプトは
==========================-
#!/bin/sh

expect -c "
set timeout 20
spawn rcp -r {コピー元} {コピー先}
expect sword:\ ; send \"{パスワード}\r\"
"
==============================
こんな感じです。

ご教授のほどよろしくお願いします。





745:login:Penguin
08/02/29 10:04:13 /PNY/URb
>>744
カレントディレクトリがどこになってるのか、とか
権限に問題はないか、とか。

つーか rsync あたり使った方が楽じゃない?

746:login:Penguin
08/02/29 17:16:24 HrPH8ECW
シェルスクリプトでは無いのかもしれませんが、今日2度目の質問をさせて下さい。。
スレ初心者なので、スレ違いだったらすいません。

LPIC試験の勉強のために初めてjoinコマンドを使うのですが、うまくいかず困っています。
1.txtと2.txtに、1〜999999の中から任意に500個程度選び出した数字を
それぞれフィールド1に、その他データをフィールド2以降に並べた
テキストファイル(↓こんな感じにソートしたのものです)

$ cat 1.txt    $ cat 2.txt
50 aiu       50 abc 1111
80 eoka      140 def 2222
↓         ↓
999999 wawon  531243 xyz 3333

があるのですが、フィールド1に同じ数字が書かれた行を
joinで繋げたいんです。色んなサイトやLPICの勉強本を参考にしたのですが

$ join -1 1 -2 1 1.txt 2.txt
$ join -j 1 1.txt 2.txt

上の2つでは、300個くらいHITするはずなのですが、数個しか出てきません。
全く同じ行に同じ数字がフィールド1に入っているものだけが出力されているようです。
行数が数行しかないファイルではきちんと違う行でも結合してくれるのですが、
行数が多いとjoinでは無理ってことはありますか?
500行くらい処理してくれるものだと思ったんですが・・・泣。
シェルスクリプトでうまくいくのであればヒントを下さい、シェルはbashです。

747:login:Penguin
08/02/29 17:21:26 /PNY/URb
>>746
いまいちやりたいことがわからん。
5行くらいのファイルで例示してみてくれ。

しかし join なんて使ったことないな。
そんなん知らなくても実務ではまったく困らん。
perl かなんかで書く勉強でもした方が役に立つよ。

748:login:Penguin
08/02/29 17:52:51 HrPH8ECW
>>747 
初めて学ぶスクリプト言語をシェルスクリプトにしようと決めたところでして、
perlとかは全く知らないんです・・・。ですが実務ではなく趣味なので楽しんでいます。
それと説明が下手ですいません(泣)再度説明させて下さい。

$ cat join1.txt
157 A B
160 C D
1291 I J
1373 K L

$ cat join2.txt
157 C D
160 E F
1373 K L

この2つのファイルをフィールド1個目でくっつけて
$ join -j 1 join1.txt join2.txt
157 A B C D
160 C D E F
1373 K L K L

にしたいんですが(上のファイルだとくっつきました)、各フィールド数が7個
各行数が500行程度、各ファイルサイズは30KBくらいになると、フィールド1個目の
数字が一緒でも、行が1個でもずれているとくっつかなくなり、行が同じものしか結合しなくなりました。
joinの精度が低いのが原因なのだとしたらお手上げなのですが、
何か他の原因は思いつきますでしょうか。perlとかSQLは全く無知なのでシェルで済ませたいんです。

749:746
08/02/29 18:07:44 HrPH8ECW
自己解決したわけではないのですが、やっぱり精度の問題みたいです・・・。
>>748の join1.txt と seq 150 200 > seq1.txt でjoinコマンドを使ってみたら結合できましたが
>>748の join1.txt と seq 1 2000 > seq2.txt でjoinコマンドを使ってみたら1つも結合出来ませんでした。
何か他の工夫で切り抜けたいと思います・・・失礼しました。

750:login:Penguin
08/02/29 21:29:21 d0BiI2Kq
>FILE1 と FILE2 は実行前に join フィールドの昇順にソートしておかなければならない(数値順のソートはだめ)。
だとさ。




751:login:Penguin
08/03/01 06:54:44 +XEPxk54
月に一度、メールログを調べたいのですが、
下記スクリプトを毎月1日朝に走らせています。

---
#!/bin/sh
pre_month_days=`date -d '1 days ago' +%d`
zcat /var/log/maillog.{1..$pre_month_days}.gz | 引き渡し先プログラム
---

これをシェルで走らせると
zcat: /var/log/maillog.{1..29}.gz: No such file or directory
となります。

ですが、
#zcat /var/log/maillog.{1..29}.gz
と手打ちすると、ズシャーっとログが表示されます、エラーも最後まで出ません。

変数展開されていないならまだしも、まったく原因がわかりません。
どういう理由で「No such file or directory」が出るのでしょうか?


752:login:Penguin
08/03/01 07:04:36 5EZ+WSHA
変数が入ってると{}って展開されないんじゃね?

753:login:Penguin
08/03/01 10:33:04 t3ZBWfKh
x=29
echo {1..$x}
してみようぜ。


754:751
08/03/01 17:46:18 IgLZSOLf
>>752-753
{1..29}

・・・ってことは、{1..29}そのものを探す=「No such file or directory」
ってことでしょうか?

ということは、pre_month_daysの文だけfor文で回して、
$temp_textにためていってから、解析プログラムに引き渡すと今思ったのですが、

この$temp_textというのは、シェルスクリプトが終了したときには、
消えてなくなるのでしょうか?どこかに残っているものなのでしょうか?
$temp_textだと、120万行ぐらいあるので、どこかに残っていれば圧迫しかねませんし・・・。

755:751
08/03/01 19:12:07 IgLZSOLf
す、すいません、
bashのfor文ってわけわかりません、( )とか{ }とか使うと思っていたのですが・・・。


zcat /var/log/maillog.$x.gz >> $temp
を繰り返して、

引き渡しプログラム $tempとしたいのですが、
for文(他のやり方もある?)をどう使えばいいのでしょうか?

756:login:Penguin
08/03/01 19:37:33 t3ZBWfKh
for文はCみたく配列を添え字でループするのと違って、
並べた要素1つ1つに対してループするというもの。

for x in 1 2 3 4 5; do
echo $x
done
とかな。

1から先月末日までの日の並びを作るために、Linuxならおそらくseqが使える。
# BSDだとjot

for $x in `seq $pre_month_days`; do
zcat ...$x...
done
とか。


757:login:Penguin
08/03/01 20:11:24 quX+uZMv
bash なら
for (( i = 0; i < 10; i++ )); do
echo $i
done
みたいな C っぽい for 文も使える。

758:751
08/03/01 20:32:55 IgLZSOLf
>>756-757
seqを使ってもエラーが出るので、
Cっぽくやってみました。

aaa.1.txt
aaa.2.txt
aaa.3.txt

を用意して、

------------------
#!/bin/bash
x=3
temp=""
for (( i=1 ; i < $x+1; i++ )); do
cat aaa.$i.txt >> $temp
done
cat $temp
-------------------

./test2.sh: line 5: $temp: ambiguous redirect
./test2.sh: line 5: $temp: ambiguous redirect
./test2.sh: line 5: $temp: ambiguous redirect

マズー(;´Д`)

am・big・u・ous[ mbjus ]
[形]
1 2通り(以上)の解釈を許す
2 (正体の)あいまいな;紛らわしい;はっきりしない, ぼんやりした, もうろうとした, おぼろげな



759:login:Penguin
08/03/01 20:49:48 pGgAUYn5
temp=""

書き込み先がないじゃんか。

temp=nulpo.txt

とか書き込み先がないと。

760:759
08/03/01 21:51:32 IgLZSOLf
い、いけました。
1ヶ月のメールログ1.4GBを食わせることができました。
ありがとうございます。

761:login:Penguin
08/03/01 22:39:09 pGgAUYn5
>>760

最初の>751をよく見てなかったんだけど、maillog.*がそんなに多くない(毎月かならず1〜29になっている、てので)なら

for file in `ls /var/log/maillog.*`
do
zcat $file | 処理プログラム
done

でいいのでは。

それと焦って名前欄間違えないように〜w


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5366日前に更新/275 KB
担当:undef