2017-04-04 116 views
0

該腳本從文本文件中讀取行。一條線看起來像這樣。從Bash中的字符串中提取字符串

227 A S comment=comment string dst-address=9.9.9.9/29 gateway=192.168.199.2 gateway-status=192.168.199.2 reachable via LACP1=1 scope=30 target-scope=10 

這是賦值的變量$路徑

那麼我就需要再分配9.9.9.9/29爲變量$subnet。我不能使用awk,因爲dst-address的列位置在行中會有所不同。

回顧一下,我需要搜索「dst-address=」的每一行,然後將'='後面的字符串賦值給變量$ subnet。

我的理想解決方案是

while read routes ; do 
    subnet=< code I need > 
done < /tmp/routingTable.txt 
+1

'的grep -OP「DST-地址= \ K [ ^] *''? – 123

+0

非常有用的命令,我會有其他用途。謝謝! –

回答

0

沒有循環A的bash溶液

echo $route | sed -r "s/.*dst-address=([0-9./]+).*/\1/" 
+0

完美的謝謝保羅! –

+2

這是一個bash解決方案,您正在使用sed ... – 123

0

Perl溶液:

perl -n -e'/dst-address=(\S+)/ && print $1."\n"' your_file