2013-06-26 63 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