藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月26日 11:18


請教如何不匹配以**開頭

[code][root@Jintao tmp]# cat ip_record
192.168.39.105
218.18.123.71
59.48.214.82
61.51.100.89
[/code]
如這個文件,假如要顯示不以192.168開頭的,該如何做?
我記得有個^[^xxx]表示不以xxx中某個字符開頭,但不知道如何不匹配某個String,謝謝.

請教如何不匹配以**開頭

問題解決,本想用sed來弄.現在用grep -v解決算了.不過希望各位高手幫幫忙,如何用sed實現.

請教如何不匹配以**開頭

試試這個sed '/^192.168/'d filename

請教如何不匹配以**開頭

sed '/^192\.168/'d filename

請教如何不匹配以**開頭

對頭.看來我還是死腦筋.光看書,不會活學活用,
謝謝 cuci和aerofox

請教如何不匹配以**開頭

呵呵,我的語法也有問題,.需要用\轉義一下

請教如何不匹配以**開頭

cuci幫我看看吧.我鬱悶

[code][root@Jintao tmp]# cat test.sh
#!/bin/sh
#1.var
LINE=`netstat -na | awk '$1~/^tcp/ {print $0}' | awk '$4~/192.168.37.188:80/ {print $5}' | cut -d: -f1 | sort | uniq | wc -l`
TMPFILE="./ip_record"
LAN_RECORD=0
WAN_RECORD=0
SERV_IP="192.168.37.188"
_DATE=`date +%Y-%m-%d`

#2.function
check_ip_invalid()
{
        if grep -q $IP  $TMPFILE
                break
        elif echo $IP | grep -q "192.168"
        then
                echo $IP >> $TMPFILE
                ((LAN_RECORD=$LAN_RECORD+1))
        else
                echo $IP >> $TMPFILE
                ((WAN_RECORD=$WAN_RECORD+1))
        fi
}

display_result()
{
        echo -e "\tResult-------->"
        echo -e "\tLan connections:$LAN_RECORD"
        echo -e "\tWan connections:$WAN_RECORD"
}

#3.main
i=0
echo $LINE                                              #debug
while [ $i -lt $LINE ]
do
        IP=`netstat -na | awk '$1~/^tcp/ {print $0}' | awk '$4~/$SERV_IP:80/ {print $5}' | cut -d: -f1 | sort | uniq | `eval echo sed -n "$i"p``
        echo "IP=$IP"
        check_ip_invalid
        ((i=$i+1))
        echo "i=$i"                                     #debug
done
[/code]
[code]
[root@Jintao tmp]# sh test.sh
test.sh: line 15: syntax error near unexpected token `elif'
test.sh: line 15: `     elif echo $IP | grep -q "192.168" '
[/code]
我覺得我的echo $LINE還在check_ip_invalid之前,但是為什麼沒有執行,反而直接報錯了???

請教如何不匹配以**開頭

其實我想知道如何不匹配以**開頭,是想通過return value來判斷ip是內網地址還是外網地址,但是通過return value的話,用sed則始終執行成功,一直返回0,我還是用grep啦.


發現問題.發現if grep -q $IP $TMPFILE後面忘記then了,但是仍然覺得不太對...
這時應該echo $LINE之後才對.

請教如何不匹配以**開頭

#2.function
check_ip_invalid()
{
       if grep -q $IP  $TMPFILE
               then (加一個then)
               break
       elif echo $IP | grep -q "192.168"
       then

請教如何不匹配以**開頭

哈哈~剛剛發現了。但是這個函數的執行應該在echo $LINE之後啊:)

請教如何不匹配以**開頭

可以在執行的時候加個-x參數可以看每一步的執行信息

請教如何不匹配以**開頭

正在進行中...
發覺這裡也是個錯誤...
[code]IP=`netstat -na | awk '~/^tcp/ {print }' | awk '~/$SERV_IP
:80/ {print }' | cut -d: -f1 | sort | uniq | `eval echo sed -n "$i"p``[/code]
直接用
[code]netstat -na | awk '~/^tcp/ {print }' | awk '~/$SERV_IP
:80/ {print }' | cut -d: -f1 | sort | uniq | `eval echo sed -n "$i"p`[/code]
是沒有問題的,我只加上了`,發覺出問題了,懷疑還是eval的問題,研究中 ...

請教如何不匹配以**開頭

「『」裡面牽套的"`"要加"\"轉義

請教如何不匹配以**開頭

轉啊

請教如何不匹配以**開頭

樓上的名字,請允許我寒一個。 :em13:

請教如何不匹配以**開頭

樓上兩位如此赤裸裸的灌水,也請允許我寒一個 :m01:

請教如何不匹配以**開頭

請允許樓主我汗一個...



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com