Разделение данных для переупорядочения из добавочного отступа - PullRequest
1 голос
/ 23 сентября 2019

Мне было трудно разобраться, как его переставить обратно.

Прокручивал https://support.microfocus.com/kb/doc.php?id=7014821

Ничто не работает, поэтому я попробовал awk

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

Дайте мне знать, что вы об этом думаете

1 Ответ

1 голос
/ 23 сентября 2019

Использование 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 номером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...