我将输入文件中的字符串拆分为:
sed -r 's/(.{14})(.{1})(.{8})(.{1})(.{8})(.{1})(.{8})(.{1})(.{8})(.{1})(.{8})(.{1})(.{8})(.*)/\1 \2 \3 \4 \5 \6 \7 \8 \9 \10 \11 \12 \13 \14/' input
输入文件内容:
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
1111112222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
2222225555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
输出:
11111111111111 1 11111111 1 11111111 1 11111111 1 11111111 111111111111110 111111111111111 111111111111112 111111111111113 111111111111114
22222222222222 2 22222222 2 22222222 2 22222222 2 22222222 222222222222220 222222222222221 222222222222222 222222222222223 222222222222224
55555555555555 5 55555555 5 55555555 5 55555555 5 55555555 555555555555550 555555555555551 555555555555552 555555555555553 555555555555554
33333333333333 3 33333333 3 33333333 3 33333333 3 33333333 333333333333330 333333333333331 333333333333332 333333333333333 333333333333334
11111122222222 2 22222222 2 22222222 2 22222222 2 22222222 111111222222220 111111222222221 111111222222222 111111222222223 111111222222224
22222255555555 5 55555555 5 55555555 5 55555555 5 55555555 222222555555550 222222555555551 222222555555552 222222555555553 222222555555554
为什么从10开始的列无法正确分割?
如何达到预期效果?
答案 0 :(得分:1)
正如Etan建议的那样,只需使用带有FIELDWIDTHS的GNU awk:
$ awk -v FIELDWIDTHS="14 1 8 1 8 1 8 1 8 1 8 1 8" '{$1=$1}1' file
11111111111111 1 11111111 1 11111111 1 11111111 1 11111111 1 11111111 1 11111111
22222222222222 2 22222222 2 22222222 2 22222222 2 22222222 2 22222222 2 22222222
55555555555555 5 55555555 5 55555555 5 55555555 5 55555555 5 55555555 5 55555555
33333333333333 3 33333333 3 33333333 3 33333333 3 33333333 3 33333333 3 33333333
11111122222222 2 22222222 2 22222222 2 22222222 2 22222222 2 22222222 2 22222222
22222255555555 5 55555555 5 55555555 5 55555555 5 55555555 5 55555555 5 55555555