2011-11-16 1 views
1

AIX에서 tnsping 출력에서 ​​을 가져와야하므로 tnsping tucson | grep Version | awk '{print $9}'이라고 적었습니다. 그러나 Linux와 같은 다른 플랫폼에서 열이 다양 할 때가 있습니다. 어디서나 {print $9}을 사용하십시오. 방법이AIX, SunOS, Linux 및 HP-UX에서 tnsping 출력의 버전을 추출하는 방법

  1. 명령은이 나오면 어떤 번호를 인쇄 직후 다음 Version
  2. 및 찾습니다하도록 있는가 (포함 ".")

또는 다른 방법?

TNS Ping Utility for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production on 16-NOV-2011 16:19:02 

Copyright (c) 1997, 2007, Oracle. All rights reserved. 

Used parameter files: 

Used HOSTNAME adapter to resolve the alias 
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=bluebird.informatica.com))(ADDRESS=(PROTOCOL=TCP)(HOST=10.65.40.235)(PORT=1521))) 
TNS-12535: TNS:operation timed out 

나는 AIX, HP-UX 및 Linux를 위해 그것을 가지고 :

tnsping tucson | grep Version | awk -F Version '{print $2}' | awk '{print $1}' 

하지만 내가 리눅스, HPUX, AIX에서 작동 뭔가를 원하는 SunOS의에 오류가 발생하고, SunOS. 보호소의 대답

리눅스, AIX 및 HP-UX 후

zenvo% tnsping tucson | grep Version | awk -F Version '{print $2}' | awk '{print $1}' 
awk: syntax error near line 1 
awk: bailing out near line 1 

업데이트 :

tnsping tucson | grep Version | awk -F Version '{print $2}' | awk '{print $1}' 

SunOS의 : Solaris에서

tnsping tucson | grep Version | nawk -F Version '{print $2}' | nawk '{print $1}' 

답변

1

AWK 오래된 AWK입니다. 일반적으로 솔라리스 사람들은 '새로운'AWK의 이점을 얻기 위해 노킹을 사용합니다.

-F Version (멋진 트릭!)을 정의 할 때 이전 AWK가 필드 구분 기호로 다중 문자 값을 지원한다고 생각하지 않습니다. 운이 좋으면 그 값을 따옴표로 추가하여 문제를 해결할 수 있습니다.

솔라리스에서 실행할 때 nawk를 지정하는 것이 더 똑똑 할 수 있습니다.

case $(uname -a) in 
    *Solaris*) awk=nawk ;; 
    *) awk=awk 
esac 

tnsping tucson | grep Version | ${awk} -F "Version" '{print $2}' | ${awk} '{print $1}' 

같은

뭔가 트릭을 할해야합니다. 필자는 Solaris 시스템에 더 이상 액세스 할 수 없으므로이 방법이 작동하는지 확인할 수는 없지만 그렇게하지 않으면 놀랄 것입니다.

흠, 이제 내 과거의 어떤 것에서 Solaris의 nawk조차도 FieldSeps와 같은 문자열을 좋아하지 않는다고 알려줍니다. 아마 당신은 (당신이이 방법에있어 보인다) 단지

tnsping tucson | ${awk} '/Version/ {sub(/,*Version /, "", $0) ; sub(/.*$/, "", $0); print $0; exit}' 

를 설치 awksome 둔한 또는 다른 솔루션을 얻을 수 있습니다 당신은 어쨌든 버전 번호 아래로 깍해야합니다. 또한 '/ Version /'에 대한 AWK의 필터를 사용하면 그 사이에 grep이 필요하지 않으며 AWK에 대한 추가 호출을 제거했습니다.

이 정보가 도움이되기를 바랍니다.

+0

@shelter : 나를 nawk' 내'AIX' 시스템이 다운 현재, 그리고 nawk는 솔라리스 나에게 버전 번호를 제공합니다'에 대해 알려 주셔서 감사합니다 – abi1964

1

sed으로 시도하십시오 :

tnsping tucson | 
sed -n '/Version/{              # Grep like 
    [email protected]* Version \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*@\[email protected] # Substitution with @ separator 
    p;                 # Print 
    q;                 # quit 
}'