0
我有記錄這樣一個CSV文件:正則表達式替換記錄最後n個分隔符
^Tablete Internet^|GoClever|^TAB I71^|^Tableta GoClever TAB I71, InfoTMIC iMAPx220 1GHz MKV, MOV, VOB, DAT, WMV, AVI, 3GP, MP4, RM, RMVB, FLV, MKV, MOV, VOB, DAT, WMV, MP3!WAV!OGG!FLAC!APE!AAC, Conectori: 1x mini jack 3.5 mm, 2 porturi USB 2.0, 4000 mAh lithium-ion polymer 3.7V^!92.00!USD!w!24!0!Link!!^5 ron^!!|
Group|Prod|Den|Description!12!EUR!^wait time^!160!Modified!Link!^Spec Obs^!^tv none^!more!info|
我需要更換近10的「!」從「|」行的末尾開始所以finaly它看起來像:
^Tablete Internet^|GoClever|^TAB I71^|^Tableta GoClever TAB I71, InfoTMIC iMAPx220 1GHz MKV, MOV, VOB, DAT, WMV, AVI, 3GP, MP4, RM, RMVB, FLV, MKV, MOV, VOB, DAT, WMV, MP3!WAV!OGG!FLAC!APE!AAC, Conectori: 1x mini jack 3.5 mm, 2 porturi USB 2.0, 4000 mAh lithium-ion polymer 3.7V^|92.00|USD|w|24|0|Link||^5 ron^|||
Group|Prod|Den|Description|12|EUR|^wait time^|160|Modified|Link|^Spec Obs^|^tv none^|other|info|
我已經試過:
sed 's/!\([^\^!]*\)!\([^!]*\)$/|\1|\2/'
但這僅替換最後2個出現次數的 「!」。如果我嘗試
sed 's/!\([^\^!]*\)!\([^!]*\)!\([^!]*\)$/|\1|\2\3/'
它不匹配任何東西......所以我該如何做到這一點?
謝謝!
你真的需要使用正則表達式嗎?編寫解析輸入文件並生成輸出文件的腳本可能更容易。 – 2012-07-07 12:04:13
我正在寫一個腳本...它正在從excel xls轉換爲csv,我需要解析不良的結果csv,因此我可以選擇性地將一些數據導入到mysql數據庫中。我需要使用bash工具和一些perl來完成所有這些。 – user1508564 2012-07-07 14:29:45