2013-06-26 64 views
0

我使用bash腳本。我有線通過正則表達式bash腳本獲取字符串

3 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:22 
4 ACCEPT  tcp -- 0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:80 

我想從這行中得到「22,80」。任何一個人都可以幫我嗎?

+0

你可以在這裏查看http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_02.html#sect_04_02_02或者你可以用Perl,蟒蛇等,輕鬆完成 – Netro

回答

1

20前的分隔符,80 :,可以主要與cut做到這一點:

$ cut -d: -f2 file 
22 
80 

隨着bash

$ while read line 
do 
    echo ${line#*:} 
done < file 
22 
80 

即使awk

$ awk -F: '{print $2}' file 
22 
80 

並完成它,與sed

$ sed 's/.*://' file 
22 
80 
+0

'perl -F:-lane'print $ F [1]'file' ... +1;) –

+1

Jaypal和他的新面貌拯救:)感謝提高我的答案! – fedorqui

0
awk 'BEGIN{FS=":"} {print $2}' file