我使用一次性perl -pi -e
命令來執行簡單搜索並從bash腳本中進行替換。我的大多數正則表達式的做工精細,直到我得到這些:在進行就地Perl編輯時使用單字符串正則表達式
perl -pi -e 's#\<\?mso-application.*\<Table.*Rows="1"\>#\<Table\>#s' 1.xml
perl -pi -e 's#\</Table.*#\</Table\>#s' 1.xml
請不要介意#標記,而不是斜線,我不想逃避,甚至更多的字符。這些正則表達式應該基本上刪除從excel導出的XML文件的塊,但不起作用。這似乎是因爲我使用了適用於字符串的邏輯,並試圖將其應用於文件(儘管我承認我只對perl的就地編輯有基本的瞭解)。
是否有替代方法可以在shell腳本中執行此操作(無論是在perl,awk還是sed中)?
您能否顯示最小的示例文件並指出您要修復的內容以及它以何種方式不是有效的XML文件? – 2010-08-13 18:20:57
最終,我通過從bash腳本中調用perl幫助程序腳本來獲得我的正則表達式,但我非常感謝您的幫助。最小的示例文件是半個兆字節,相信我,這是醜陋的。 – Gnats 2010-08-14 18:53:40