1 名前:login:Penguin [2007/07/10(火) 23:17:13 ID:qGthZdME] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? 【sed】シェルスクリプト総合@LINUX Part2【awk】 pc11.2ch.net/test/read.cgi/linux/1154578200/ pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
952 名前:login:Penguin mailto:sage [2008/04/24(木) 09:43:23 ID:C5h8jkbM] 一秒に100行以上流れるとか全然関係ないと思うぞ。
953 名前:login:Penguin mailto:sage [2008/04/24(木) 10:09:04 ID:iBrwQJHF] そんなにおかしいか? おれもよくやるけどな。
954 名前:login:Penguin mailto:sage [2008/04/24(木) 19:19:48 ID:BuhR71Gk] >>952 logの監視は他にどんな手段でやってるの?
955 名前:login:Penguin mailto:sage [2008/04/24(木) 19:42:01 ID:28W2p82+] tail -fしても速く流れるのは変わらないだろ? 大きなファイルの増分だけ見たい時は有効だけど。
956 名前:login:Penguin mailto:sage [2008/04/24(木) 19:54:48 ID:iBrwQJHF] たとえば tail -f access_log | grep 10.99.78.22 とかやっといて、10.99.78.22 からアクセスしながらログを見たりする。 tail -f access_log だけだとログが多過ぎるし grep 10.99.78.22 access_log ではリアルタイムに見れない。 つーか、なんでそんなに否定したがるんだ?
957 名前:login:Penguin mailto:sage [2008/04/24(木) 20:51:49 ID:PIJRHfrL] そんなのは常識。 tail -fするのは、増分を見たいからだろ? 速く流れるのは関係ない。それはgrepの役目。 >>949 に対する>>951 の答えはおかしい。 それが読み取れない>>953 も疑問。
958 名前:login:Penguin mailto:sage [2008/04/24(木) 23:00:30 ID:amh/02/G] >>956 基本だよな。それって。
959 名前:login:Penguin mailto:sage [2008/04/25(金) 01:12:52 ID:05aUO6OC] 役に立たないのは949,952,957のレスだろ つegrep -v '(949|952|957)'
960 名前:login:Penguin mailto:sage [2008/04/26(土) 03:30:44 ID:2buln9M4] ファイルを検索して、 ファイル名によって分岐させたいと思っています。 以下のようにスクリプトを書いたのですが、 if [ $file = *.o ] がうまく動作してくれません。 どこが間違っているのでしょうか? # $1はディレクトリ for file in `find $1` do if [ -x $file ]; then echo "x: Name=$file" else if [ $file = *.o ]; then # .oで終わるファイル echo ".o: Name=$file" else echo "not .o: Name=$file" fi fi done
961 名前:login:Penguin mailto:sage [2008/04/26(土) 03:41:55 ID:l2xr5sbr] [ $file = *.o ] の * がパス名展開されるから。 こういう時は case 文使うと楽。 case "$file" in *.o) echo ".o: Name=$file" ;; *) echo "not .o: Name=$file" ;; esac
962 名前:960 mailto:sage [2008/04/26(土) 04:22:04 ID:2buln9M4] >>961 ありがとうございます! >* がパス名展開される なるほどです。 今後のためにお聞きしたいのですが、 このままifで処理するには どのようにしたらよいのでしょうか?
963 名前:login:Penguin mailto:sage [2008/04/26(土) 05:02:51 ID:+ITD/myA] expr でパターンマッチさせた結果を判定するのが常套手段だと思う。 でも解り易さで俺も>>961 おすすめ。 shでなくbashやzshに依存するやり方で良いなら他にもあるので、manするとエエでがす。
964 名前:960 mailto:sage [2008/04/26(土) 11:07:16 ID:2buln9M4] >>963 expr、なるほど。 C++やってるときも、caseなんてifがあるから要らね、 とか言ってるのをshにも持ち込んでしまったわけですが、 shではcaseを格上げします。 ありがとうございました。
965 名前:login:Penguin mailto:sage [2008/04/26(土) 11:09:05 ID:zBt65CRz] >>964 ざけんな。switchの方がコードの見通しがよくなる場面が多々ある。 適材適所だ。
966 名前:login:Penguin mailto:sage [2008/04/27(日) 00:22:17 ID:FoD+QJwV] 一文字のみ、小文字を大文字に置換の方法、教えてください _linux から _Linux へ (この場合、小文字lを大文字Lへ、一文字のみ) trとかsedでぐぐってみましたが、すべての文字に適用される例のものばかりで。。。
967 名前:login:Penguin mailto:sage [2008/04/27(日) 00:31:12 ID:mG61TWcx] echo _linux | sed -e 's/[a-z]/\U&/'
968 名前:login:Penguin mailto:sage [2008/04/27(日) 01:13:49 ID:FoD+QJwV] >>967 ありがとうございます 期待通りの動作になりました、感謝