Unix 拆分数据以从增量缩进重新排列
我很难想出重新安排的方法 一直在滚动浏览 似乎什么都不管用,所以我尝试了awkUnix 拆分数据以从增量缩进重新排列,unix,awk,Unix,Awk,我很难想出重新安排的方法 一直在滚动浏览 似乎什么都不管用,所以我尝试了awk awk '{print substr($0,5,76)}' input.txt 但它在每个部分都有增量价值 input.txt H0007 LINE H0007 WILL . H0007
awk '{print substr($0,5,76)}' input.txt
但它在每个部分都有增量价值
input.txt
H0007 LINE
H0007 WILL .
H0007
H0007 LINE
H0007 WILL .
H0007 \00\00\00\00\00\00\00\00
\B0\00\00H0007 LINE
TAPEH0007 WILL .
H0007
H0007 LINE
ILL H0007
H1406 0 0 0.000 0.000 -38.3001.00000000
H1014SY-STR4 21
H1214
H1414 0 0 0.000 0.000 -27.1001.00000000
H1015SY-STR4 21
\00\00\00\00\D4\00\00\9C\00\00H1215
H1415 0 0 0.000 0.000 -21.6001.00000
000 H1016SY-STR4 21
L0110 41553.059N 848 6.304E 471350.00 478000.00
L0210 41552.846N 83822.374E 471350.00 460000.00
E0010RRM-045 1721 172391 19 14340.1252.10 9.410
1000000 E0110 41551.988N 848 3.310E 471317.06 477907.81 0.0 0.02
67.73 0.0 E1010 2 1 26738.40 -4.80001 3 1 1659
2.40 -3.30001 \00\00\00\00\B0\00\00؞\00\00E1010 4 1 15662.30 -1.30001 5 1 24356.60 -3.50001
6 1 38672.30 -3.80001 E1010 14 2 25335.00 -1.60001
15 2 13811.50 -3.00001 E101016 2 13352.30 -1.2000117 2 22583.50 -4.40001
18 2 40133.20 1.80001 E30111 79.5 77.43
E30122 68.7 77.52
E30131 72.4 21.90 0.012756.01
E2111 20258.4 40257.2 60258.2 80259.7 100259.9 12
0259.8 140260.2 160259.9 E2211 20 4.1 40 4.2 60 3.3 80 3.2 100 4.5 12
它有二进制头“\00\00*+\00\00\9C”,是字符编码吗
预期结果
H0007
H0007 LINE
H0007 WILL .
H0007
H0007 LINE
H0007 WILL .
H0007
H0007 LINE
H0007 WILL .
H0007
H0007 LINE
H0007
H1406 0 0 0.000 0.000 -38.3001.00000000
H1014SY-STR4 21
H1214
H1414 0 0 0.000 0.000 -27.1001.00000000
H1015SY-STR4 21
H1215
H1415 0 0 0.000 0.000 -21.6001.00000000
H1016SY-STR4 21
L0110 41553.059N 848 6.304E 471350.00 478000.00
L0210 41552.846N 83822.374E 471350.00 460000.00
E0010RRM-045 1721 172391 19 14340.1252.10 9.4101000000
E0110 41551.988N 848 3.310E 471317.06 477907.81 0.0 0.0267.73 0.0
E1010 2 1 26738.40 -4.80001 3 1 16592.40 -3.30001
E1010 4 1 15662.30 -1.30001 5 1 24356.60 -3.50001 6 1 38672.30 -3.80001
E1010 14 2 25335.00 -1.6000115 2 13811.50 -3.00001
E101016 2 13352.30 -1.2000117 2 22583.50 -4.4000118 2 40133.20 1.80001
E30111 79.5 77.43
E30122 68.7 77.52
E30131 72.4 21.90 0.012756.01
E2111 20258.4 40257.2 60258.2 80259.7 100259.9 120259.8 140260.2 160259.9
E2211 20 4.1 40 4.2 60 3.3 80 3.2 100 4.5 12
请告诉我您对GNU awk的看法:
awk -v RS='[HLE][0-9]{4}[^\n]*\n' '{printf "%s", RT}' file
记录分隔符RS
设置为捕获所需的模式,假设模式E
、H
或L
后面有4位数字。唯一的语句是打印捕获的记录分隔符
RT
使用sed:
sed 's/[^HLE]*\([HLE][0-9]\{4\}.*\)/\1/' file
这个sed替换删除了字符
H
、L
或E
后面跟4个数字之前的所有内容。我删除了Python标记,因为它似乎与您的问题无关。如果相关的话,请发布您正在使用的Python代码,并重新添加标记。谢谢,实际上文本是以字节打印的,您有什么建议来恢复对齐方式吗