我有以下格式的csv文件之間的特殊字符表情..經常尋找雙引號
001,"Craig,betsy",Newyork
002,"sam.nathan",charlotte
我需要找到該文件在雙引號內的逗號..好心幫我在獲取在UNIX或Perl的正則表達式。
否則避免雙引號內的逗號..
我需要輸出的文件是這樣
001 |「Craig,betsy」|紐約
002 |「sam.nathan」| charlotte。
請添加輸入幫助..
我有以下格式的csv文件之間的特殊字符表情..經常尋找雙引號
001,"Craig,betsy",Newyork
002,"sam.nathan",charlotte
我需要找到該文件在雙引號內的逗號..好心幫我在獲取在UNIX或Perl的正則表達式。
否則避免雙引號內的逗號..
我需要輸出的文件是這樣
001 |「Craig,betsy」|紐約
002 |「sam.nathan」| charlotte。
請添加輸入幫助..
Perl的一個班輪
隨着你的輸入,你可以使用這個:
perl -ne 'while(m/"[^",]+\K,(?=[^",]*")/g){print "$&\n";}' yourfile
+1在此正則表達式中適用於'\ K' – anubhava
這裏是一個awk
將改變提交分隔符到|
awk -F, '{for (i=1;i<NF;i++) {c+=gsub(/\"/,"&",$i);printf "%s"(c%2?FS:"|"),$i}print $NF}' t
001|"Craig,betsy"|Newyork
002|"sam.nathan"|charlotte
它將數據劃分爲由,
分隔的組。然後它會統計它在每個字段中找到多少個"
。
當數可以除以2,然後用|
,如果不使用,
如果你有gnu awk 4.xxx
你可以使用FPAT
awk '{for (i=1;i<NF;i++) printf "%s|",$i;print $NF}' FPAT='[^,]+|"[^"]+"' t
001|"Craig,betsy"|Newyork
002|"sam.nathan"|charlotte
如何做到這一點FPAT='[^,]+|"[^"]+"'
工作?
它定義了一個字段的樣子,而不是什麼是分隔符。
[^,]+
一個字段是一些不包含,
或
"[^"]+"
一些開始與"
然後字符不等於"
並用"
結束。 Eks "my,data"
或"data"
一旦您在引號內找到逗號,您究竟想做什麼? – hwnd
你的意思是什麼?尋找什麼? 'sed -r -n'/".*,.*"/p''將會在雙引號內打印出逗號。 – WKPlus
您可能想要使用[CSV解析器](https://metacpan.org/pod/Text::CSV)。 –