|
藍森林 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: |
請教如何不匹配以**開頭
請允許樓主我汗一個... |
| |