입력하다:
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에 추가되었습니다.. 이것이것이 두 Perls가 서로 다른 결과를 나타내는 이유입니다.