我需要一些帮助来将文件转换为具有以下要求的新文件:
- 根据固定长度
将每一行(长字符串)拆分为子字符串- 使用管道分隔符“|”在每个子字符串之间
- 按原样保留上一个未定义的列(子字符串),但添加“|”在它之前。
醇>
这是一个例子,假设一个文件(test.dat)有两行:
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 :(得分: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