2016-01-06 212 views
1

我需要執行我的bash腳本(output.sh)作爲管道腳本。 見下文。運行管道bash腳本

echo "Dec 10 03:39:13 cgnat2.dd.com 1 2015 Dec 9 14:39:11 01-g3-adsl - - NAT44 - [UserbasedW - 100.70.24.236 vrf-testnet - 222.222.34.65 - 3072 4095 - - ][UserbasedW - 100.70.25.9 vrf-testnet - 222.222.34.65 - 16384 17407 - - ][UserbasedW - 100.70.25.142 vrf-testnet - 222.222.34.69 - 9216 10239 - - ]" | ./output.sh

我怎樣才能到我output.sh文件呼應的文本,我需要拆分呼應使用[

輸出文本應該是

[UserbasedW - 100.70.24.236 vrf-testnet - 222.222.34.65 - 3072 4095 - - ] [UserbasedW - 100.70.25.9 vrf-testnet - 222.222.34.65 - 16384 17407 - - ] [UserbasedW - 100.70.25.142 vrf-testnet - 222.222.34.69 - 9216 10239 - - ]

請幫幫我。我不知道.. :(

回答

1

使用grep :

| grep -o '\[[^]]*\]' 

或GNU的grep:

| grep -oP '\[.*?\]' 

輸出:

 
[UserbasedW - 100.70.24.236 vrf-testnet - 222.222.34.65 - 3072 4095 - - ] 
[UserbasedW - 100.70.25.9 vrf-testnet - 222.222.34.65 - 16384 17407 - - ] 
[UserbasedW - 100.70.25.142 vrf-testnet - 222.222.34.69 - 9216 10239 - - ] 

隨着bash腳本(例如output.sh):

#!/bin/bash 
grep -o '\[[^]]*\]' 

用法:

echo "... your string ..." | ./output.sh 

參見:The Stack Overflow Regular Expressions FAQ

+0

我需要將這些輸出文本放到我的output.sh文件中......我該如何做到這一點? –

+0

謝謝你... 最後的東西你能告訴我如何得到以下部分 'Dec 10 03:39:13 cgnat2.dd.com 1 2015年12月9日14:39:11 01-g3-adsl - - NAT44 - ' –

+0

'echo「...你的長弦......」| grep -o'^ [^ \ [] *'' – Cyrus

0

如果之前第一[除去,您的管前使用之間一個sed(假設你的回波其他來源的樣品)

echo "Dec 10 03:39:13 cgnat2.dd.com 1 2015 Dec 9 14:39:11 01-g3-adsl - - NAT44 - [UserbasedW - 100.70.24.236 vrf-testnet - 222.222.34.65 - 3072 4095 - - ][UserbasedW - 100.70.25.9 vrf-testnet - 222.222.34.65 - 16384 17407 - - ][UserbasedW - 100.70.25.142 vrf-testnet - 222.222.34.69 - 9216 10239 - - ]" \ 
| sed 's/^[^[]*//' \ 
| ./output.sh 
+0

怎麼寫output.sh外殼文件,以獲得分裂字符串???我需要分割文本到我的output.sh文件 –