シェルスクリプト総合@LINUX Part3at LINUX
シェルスクリプト総合@LINUX Part3 - 暇つぶし2ch948:login:Penguin
08/04/23 22:57:21 xEICV4cP
grepの結果で AAAとBBBのOR検索をしたいのですが、

tail -f /var/log/maillog | grep [AAA|BBB]
とやってもだめでしたorz

どうすれば、OR検索ができるのでしょうか?
ANDは、パイプで追加すれば可能なのですが・・。

949:login:Penguin
08/04/23 23:29:21 Y+58Od8z
なんで tail -f なんてする必要が有るんだ?

950:login:Penguin
08/04/23 23:33:35 M4AkpEZt
>>948
grep -E "(AAA|BBB)" もしくは
egrep "(AAA|BBB)"

951:948
08/04/24 04:44:09 8uaGXJVC
>>950
egrepでしたか、ありがとうございます。

>>949
1秒に100行以上流れるログなので、速すぎて読めないのよねw

952:login:Penguin
08/04/24 09:43:23 C5h8jkbM
一秒に100行以上流れるとか全然関係ないと思うぞ。

953:login:Penguin
08/04/24 10:09:04 iBrwQJHF
そんなにおかしいか?
おれもよくやるけどな。

954:login:Penguin
08/04/24 19:19:48 BuhR71Gk
>>952
logの監視は他にどんな手段でやってるの?

955:login:Penguin
08/04/24 19:42:01 28W2p82+
tail -fしても速く流れるのは変わらないだろ?
大きなファイルの増分だけ見たい時は有効だけど。

956:login:Penguin
08/04/24 19:54:48 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
08/04/24 20:51:49 PIJRHfrL
そんなのは常識。

tail -fするのは、増分を見たいからだろ?
速く流れるのは関係ない。それはgrepの役目。
>>949に対する>>951の答えはおかしい。

それが読み取れない>>953も疑問。


958:login:Penguin
08/04/24 23:00:30 amh/02/G
>>956
基本だよな。それって。

959:login:Penguin
08/04/25 01:12:52 05aUO6OC
役に立たないのは949,952,957のレスだろ
つegrep -v '(949|952|957)'

960:login:Penguin
08/04/26 03:30:44 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
08/04/26 03:41:55 l2xr5sbr
[ $file = *.o ] の * がパス名展開されるから。
こういう時は case 文使うと楽。

case "$file" in
*.o) echo ".o: Name=$file" ;;
*) echo "not .o: Name=$file" ;;
esac



962:960
08/04/26 04:22:04 2buln9M4
>>961
ありがとうございます!
>* がパス名展開される
なるほどです。

今後のためにお聞きしたいのですが、
このままifで処理するには
どのようにしたらよいのでしょうか?

963:login:Penguin
08/04/26 05:02:51 +ITD/myA
expr でパターンマッチさせた結果を判定するのが常套手段だと思う。
でも解り易さで俺も>>961おすすめ。
shでなくbashやzshに依存するやり方で良いなら他にもあるので、manするとエエでがす。

964:960
08/04/26 11:07:16 2buln9M4
>>963
expr、なるほど。

C++やってるときも、caseなんてifがあるから要らね、
とか言ってるのをshにも持ち込んでしまったわけですが、
shではcaseを格上げします。

ありがとうございました。

965:login:Penguin
08/04/26 11:09:05 zBt65CRz
>>964
ざけんな。switchの方がコードの見通しがよくなる場面が多々ある。
適材適所だ。

966:login:Penguin
08/04/27 00:22:17 FoD+QJwV
一文字のみ、小文字を大文字に置換の方法、教えてください

_linux
から
_Linux

(この場合、小文字lを大文字Lへ、一文字のみ)
trとかsedでぐぐってみましたが、すべての文字に適用される例のものばかりで。。。

967:login:Penguin
08/04/27 00:31:12 mG61TWcx
echo _linux | sed -e 's/[a-z]/\U&/'

968:login:Penguin
08/04/27 01:13:49 FoD+QJwV
>>967
ありがとうございます
期待通りの動作になりました、感謝


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch