Text-Processing
僅在逗號分隔文件中刪除引號之間的逗號
我有一個用逗號 (
,
) 分隔的輸入文件。有一些用逗號括在雙引號中的欄位。這是範例行123,"ABC, DEV 23",345,534.202,NAME
我需要刪除雙引號和雙引號內出現的所有逗號。所以上面的行應該被解析成如下所示
123,ABC DEV 23,345,534.202,NAME
我嘗試了以下使用
sed
但沒有給出預期的結果。sed -e 's/\(".*\),\(".*\)/\1 \2/g'
sed
請使用awk
或任何其他 unix 實用程序的任何快速技巧?
如果引號是平衡的,您將需要刪除每個其他引號之間的逗號,這可以這樣表示
awk
:awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile
輸出:
123,ABC DEV 23,345,534.202,NAME
解釋
這
-F"
使得 awk 將雙引號處的行分開,這意味著每個其他欄位都將是引號間文本。for 循環gsub
在所有其他欄位上執行,即全域替換的縮寫,將逗號 (","
) 替換為空 (""
)。最後1
呼叫預設程式碼塊:{ print $0 }
.