我有一些數據文件導入到數據庫中的一些「獨特」的分隔符:如何做搜索/替換命令行「二進制」文件
字段分隔符(FS):SOH(ASCII字符1)
記錄分離器(RS):STX(ASCII字符2)+ '\ n'
我想將文件導入到使用COPY命令的Postgres但雖然我可以指定自定義字段分隔符,它不能處理記錄分隔符。
我不能只從數據中去掉\ 002,因爲如果在其中一個字段中有一個換行符(並且有),它會錯誤地將COPY認爲是新的記錄事實並非如此。
需要注意的一件重要的事情是:保留字段中的換行符並不重要,如果它們只是轉換爲空格就沒有問題。考慮到這一點,我正在考慮使用類似「sed」的命令將換行符轉換爲空格,然後將\ 002轉換爲換行符。但是,由於sed是一個基於行的工具,它似乎沒有在每行的末尾看到換行符,並且無法對它們執行搜索/替換。
是否有任何其他的unix命令行工具可以完成這項工作?
編輯:我想我真正要求的是UNIX的實用工具,可以處理文件(執行查找/替換)爲「二進制」,不要把它分爲線
多次通過不是問題 - 我可以通過將幾個unix命令一起管道來做到這一點。我看到的問題是,「sed」逐行使用數據,這會有效隱藏替代命令中的最後一個「\ n」 - 它是不可觸摸的。 – 2008-12-19 03:41:31