2014-11-25 216 views
3

如何使用一個string和另一個character作爲awk中的同時分隔符?如何將awk分隔符設置爲字符串或字符?

[email protected]:~/AMD_C/SO$ echo "111:222text333:444" | awk -F ':' '{print $2}' 
222text333 

[email protected]:~/AMD_C/SO$ echo "111:222text333:444" | awk -F "text" '{print $2}' 
333:444 

因此問題是,我們如何使用「text」和「:」作爲分隔符的同時,使{print $2}將打印222作爲輸出?考慮上面的例子中的輸入。

回答

3

您可以使用簡單的交替

$ echo "111:222text333:444" | awk -F "text|:" '{print $2}' 
222 

它能做什麼

  • -F "text|:"將字段設置分隔符爲text:

測試

爲了確保此正確界定領域

$echo "111:222text333:444" | awk -F "text|:" '{print $1,$2,$3,$4}' 
111 222 333 444 

編輯

如果你想使用|作爲delimitter,逃避|作爲

$ echo "111:222text333:444|hello" | awk -F '\\||text|:' '{print $1,$2,$3,$4,$5}' 
111 222 333 444 hello 
+1

謝謝! 1懷疑,如果我需要'|'還有一個字符作爲分隔符? – 2014-11-25 14:57:10

+0

例如:echo「111 | 222text333 | 444」| awk -F「text | \ |」 '{print $ 3}' awk:warning:轉義序列'\ |'視爲普通的'|' – 2014-11-25 15:00:38

+0

@ A.M.D好問題。退出'|'並確保將整個事情用單引號括起來。我編輯了答案。希望它有助於:) – nu11p01n73R 2014-11-25 15:01:39