我有正則表達式模式來查找和逗號之間的逗號替換。它完美的工作在崇高的文本,但不是在sed linux命令。不知道這裏缺少什麼。RegEx模式發現在崇高的文本,但不是在Linux sed命令sed
註冊防爆模式:,(?!(?:[^"]*"[^"]*")*[^"]*$)
sed命令 sed -e 's/,\(?!\(?:[^"]*"[^"]*"\)*[^"]*$\)/\1\2/g' test.csv
我有正則表達式模式來查找和逗號之間的逗號替換。它完美的工作在崇高的文本,但不是在sed linux命令。不知道這裏缺少什麼。RegEx模式發現在崇高的文本,但不是在Linux sed命令sed
註冊防爆模式:,(?!(?:[^"]*"[^"]*")*[^"]*$)
sed命令 sed -e 's/,\(?!\(?:[^"]*"[^"]*"\)*[^"]*$\)/\1\2/g' test.csv
你沒有提供任何樣品的輸入/輸出,所以它是一個猜測,但是這是你想要做什麼:
$ echo '"a,b","c,d"' | sed 's/"\([^"]*\),\([^"]*\)"/\1\2/g'
ab,cd
鑑於你的評論如下:
$ echo '"a,b","c,d"' | sed 's/\("[^"]*\),\([^"]*"\)/\1\2/g'
"ab","cd"
我試圖只替換逗號不引號。我使用'perl -pi -e's /,(?!(?:[^ \「] * \」[^ \「] * \」)* [^ \「] * $)/ ,/g'
然後,只需在捕獲組中包含引號,我更新了我的答案,您確實做得比實際情況複雜得多,我發佈的內容將適用於任何具有任意sed的UNIX框。 –
不同的工具實現了所有可能的正則表達式特徵的不同子集。 'sed'支持相當有限的一組功能。 – janos
'sed'只支持「[基本正則表達式](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_03)」,零寬度斷言如'(?!)'是不支持。 – ephemient
是否有使用複雜的正則表達式模式來查找和替換文件內容 –