2011-11-16 7 views
1

をAIXのtnsping出力からフェッチしたいので、tnsping tucson | grep Version | awk '{print $9}'と書いていますが、Linuxのような他のプラットフォームでは、どこでも{print $9}を使用してください。コマンドがVersion AIX、SunOS、Linux、およびHP-UXのtnsping出力からバージョンを抽出する方法

  • を探し、そのような

    1. ことと、それが立ち上がるどんな数印刷した直後の方法がある(を含むが、「」)

    またはいずれかの他の方法?

    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}' 
    

    しかし、私は、私は、Linux、HP-UX、AIX上で動作する何かをしたいSunOSの上のエラーを取得し、 SunOS。シェルターの答え

    のLinux、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です。通常、Solarisの人々はnawkを使用して「新しい」AWKの利点を得る。

    -F Version(nice trick!)と定義されているように、古いAWKがフィールドセパレータとしてマルチキャラクタ値をサポートしているとは思えません。あなたが運が良ければ、その値の周りに引用符を付けて問題を解決するかもしれません。

    Solarisで実行しているときに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 gawkのか、別の解決策を得ることができますし、とにかくあなたのバージョン番号に絞り込まれなければなりません。また、 '/ Version /'用のAWKのフィルタでは、grepを間に入れる必要はなく、AWKを余分に呼び出す必要はありません。

    こちらがお役に立てば幸いです。

    +0

    @shelter:nawk'マイ 'AIX'システムが現在ダウンしている、とnawkのは私のSolarisでのバージョン番号を与える'について私に知らせるためのおかげで – 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 
    }' 
    
    関連する問題