入力する:
tmp# cat test5
1234 012345
0.000 01234
01/02/03 5467
01234 0123
05554567 234
0099
0000 000054
Bashシェルからの出力:
[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"
/sbin/sh
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
答え1
欲しいと思う手紙を書く0 で始まるすべての整数値を引用します。この目標を達成する簡単なREは次のとおりです。
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"
答え2
両方のシステムは異なるバージョンのPerlを実行しており、シェルの違いは関係ありません。
HP-UXのPerlは、アケマによると、Perl 5.8.8、フォワードおよびリバースルックエスケープと水平\K
スペース\h
エスケープどちらもPerl 5.10に追加されました。。 これこれが2つのPerlsが異なる結果を示す理由です。