2017-07-26 62 views
-1

我需要一些幫助這裏將文件轉換成一個新的文件,下面的要求:分割每行中的一個文件與分隔符子基於固定長度

  1. 分割每行(長字符串)成基於固定長度的子字符串
  2. 使用管道分隔符「|」每個子字符串之間
  3. 按原樣保留最後一個未定義的列(子字符串),但添加「|」在它之前。

這裏是例如,假設一個文件(TEST.DAT)具有2行:

PG123ABCD A 000{000 
MK789HJKL32H00 

Column 1: length(2) 
Column 2: length(3) 
Column 3: length(4) 
Column 4: length(3) 
Column 5: undefined, use all remaining value 

下面是最終輸出我需要。這個例子只有2行,假設我有一個文件有1k +相似的行,我需要根據上述要求將原始文件轉換爲新文件。

PG|123|ABCD| A |000{000 
MK|789|HJKL|32H|00 
+0

由於堆棧溢出從你隱藏了關閉的原因:*尋求幫助調試(「?爲什麼不是這個代碼工作」)必須包括所需的行爲問題,具體的問題或錯誤以及在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。* – jww

+0

您可能需要[參觀](https://stackoverflow.com/tour )學習如何有效地使用Stack Overflow。同時,也許[Rent A Coder](http://www.rentacoder.com)或[Freelancer](http://www.freelancer.com)可以幫助你。 – jww

回答

2
cut -b 1-2,3-5,6-9,10-12,13-500 --output-delimiter='|' test.dat > 1.dat 

我上面的代碼,並將其輸出究竟寫了什麼,我需要。

我唯一的問題是最後一列中,我使用13-500作爲固定長度爲未定義列,但是未定義其餘的字符串的長度在不同的行而變化,有沒有以限定一個通用的方法最後一列的長度?例如,像13 max_lengh_of_the_row

+0

你可以用'13-'來指定從第13個字符開始 –

+0

謝謝@Bertrand Martel,那有效! – azCats

相關問題