2014-03-28 41 views
3

我的數據:AWK:字段分隔符爲雙管以上

-1||"A|AA"||[email protected] 
-10||"B ||B|ttB||b|| [email protected] 
-7||C||c 

我想用逗號交換雙管分隔符||,這樣的:

awk -F'||' -v OFS="," '{$1=$1} 1' 2.txt 

但輸出仍是相同。 相反的情況(逗號和雙管),然而,工作原理:

awk -F"," -v OFS="||" '{$1=$1} 1' 1.txt 

我在做什麼錯?

+0

哪裏是第2行收盤報價? –

回答

9

你需要躲避管道符號:

awk -F '[|][|]' -v OFS="," '{$1=$1}1' 
+0

Downvotes?真? –

+1

+1:希望這將補償雖然得到一個downvote一個良好的工作解決方案是令人沮喪的。 –

4

你需要逃跑元字符像|或字符類使用它們,使它們被認爲是文字。他們被認爲是符合邏輯的OR沒有逃生的符號。試試這個:

$ awk -F'[|][|]' -v OFS="," '{$1=$1} 1' data 
-1,"A|AA",[email protected] 
-10,"B ,B|ttB,b, [email protected] 
-7,C,c