2013-10-22 70 views
2

我有這個字符串SED不排除外卡

[1.1.1.1 2.2.2.2] 

你能告訴我如何刪除[ ]。我沒有成功與sed

做到這一點我想,在最後會是這樣的:

1.1.1.1 
2.2.2.2 
+1

那你試試用'sed'過嗎?不知道你已經嘗試了什麼,很難提出解決方案。 – chepner

回答

2

tr -d '[]'將刪除的方括號:

$ tr -d '[]' <<< "[1.1.1.1 2.2.2.2]" 
1.1.1.1 2.2.2.2 

要拆分,可以使用一個sed命令狀's/ /\n/'

$ tr -d '[]' <<< "[1.1.1.1 2.2.2.2]" | sed 's/ /\n/' 
1.1.1.1 
2.2.2.2 
1

嘗試這樣,

echo [1.1.1.1 2.2.2.2] | sed 's/\[//' | sed 's/\]//'| sed 's/ /\n/' 
1.1.1.1 
2.2.2.2 
1

這可能工作

echo '[1.1.1.1 2.2.2.2]' | sed -e 's/\[//' -e 's/]//' -e 's/ /\n/' 
1.1.1.1 
2.2.2.2 
0

這可能適合你:

$ sed 's/\[\(.*\) \(.*\)\]/\1\n\2/' <<< "[1.1.1.1 2.2.2.2]" 
1.1.1.1 
2.2.2.2 
1
$ echo '[1.1.1.1 2.2.2.2]' | tr -d '[]' 
1.1.1.1 2.2.2.2 

$ for derp in $(echo '[1.1.1.1 2.2.2.2]' | tr -d '[]'); do echo $derp; done 
1.1.1.1 
2.2.2.2 

$ echo '[1.1.1.1 2.2.2.2]' | tr -d '[]' | sed 's/\s\+/\n/g' 
1.1.1.1 
2.2.2.2 
1

使用它作爲:

echo '[1.1.1.1 2.2.2.2]' | sed -r 's/\[|\]//g' 
1.1.1.1 2.2.2.2 

或使用posix sed:

echo '[1.1.1.1 2.2.2.2]' | sed 's/[][]//g' 
1.1.1.1 2.2.2.2 
+1

你可以避免在第二條命令中轉義,因爲'sed'假定一個空字符類沒有用,並且把']作爲普通字符,而不是更接近。 – Birei

+0

@Birei:謝謝,編輯。 – anubhava

0

如果只有數量,空間和點你也可以使用

echo '[1.1.1.1 2.2.2.2]' | sed "s/[^0-9. ]//g" 

但最好是POSIX一個由anubhava只是