我想通过使用列序数位置和字段长度将固定宽度文件转换为 UNIX 中的管道分隔文件。
输入看起来像这样,
00100000003779U20210203
00200000004238U20210203
所需输出:
001|0000000377|9U|20210203
002|0000000423|8U|20210203
可用信息是
Column Ordinal Position - field length
1 - 3
2 - 10
3 - 2
4 - 8
答案1
这可以帮助:
cut -b1-3,4-13,14-15,16-23 --output-delim="|" file
答案2
使用 GNU awk
gawk -v OFS='|' -v FIELDWIDTHS="3 10 2 8" '{$1=$1; print}' file
001|0000000377|9U|20210203
002|0000000423|8U|20210203
该$1=$1
技巧迫使 awk 使用输出字段分隔符重写记录。
如果您需要更便携的东西,perl 无处不在:
perl -lne 'print join "|", (/^(.{3})(.{10})(.{2})(.{8})/)' file