Script Perl dando saída diferente no shell bash no Linux e shell / sbin / sh no HP unix

2

Entrada:

tmp# cat test5
1234      012345
0.000             01234
01/02/03          5467
01234           0123
05554567       234
0099
0000           000054

Saída na Bash Shell:

[tmp]# perl -lpe 's#(^|\h)\K0[^./\h]+(?=\h|$)#"$&"#g' test5
1234      "012345"
0.000             "01234"
01/02/03          5467
"01234"           "0123"
"05554567"       234
"0099"
"0000"           "000054"

Saída no shell /sbin/sh no HP Unix:

/tmp # perl -lpe 's#(^|\h)\K0[^./\h]+(?=\h|$)#"$&"#g' test5
1234      012345
0.000             01234
01/02/03          5467
01234           0123
05554567       234
0099
0000           000054
    
por ABHARDWAJ 16.11.2017 / 10:28

2 respostas

0

Parece que você deseja escrever uma letra citar todos os valores inteiros que começam com zero. Este é um RE muito mais simples que alcança esse objetivo:

perl -lpe '1 while (s/(^|\s)(0\d*)(\s|$)/$1"$2"$3/)' test5

1234      "012345"
0.000             "01234"
01/02/03          5467
"01234"           "0123"
"05554567"       234
"0099"
"0000"           "000054"
    
por 16.11.2017 / 11:34
0

As duas máquinas estão rodando versões diferentes do Perl, e a diferença nas shells não tem nada a ver com isso.

O Perl no HP-UX é, de acordo com o Archemar , Perl 5.8.8, e o escape positivo atrás de \K e o escape \h para espaço em branco horizontal foram adicionados em Perl 5.10 . Este é o porquê dos dois Perls darem resultados diferentes.

    
por 25.04.2018 / 20:38

Tags