2017-06-12 25 views
0

以下は、xmlファイルから2行の出力を抽出するために使用するawkおよびsedコマンドの出力を示しています。 4つの異なる変数にホスト名とポート名を割り当てる必要がありますので、これらを使用してさらに問い合わせを行うことができます。お手伝いできますか?複数の行の出力列を異なる変数に割り当てる?

catファイル| awk | sedのは

Address host1 port_1 Address 
BackupAddress host2 port_2 BackupAddress 

所望の出力

hosta="host1" 
porta="port_1" 
hostb="host2" 
portb="port_2" 

以下の2行を生成し、私は感謝し、あなたの解像度で詳細な説明を歓迎します。

+0

**の前にファイル**を表示する**あなたは 'cat file | awk |それは何かのための良い出発点ではないので、sed。また、4行分の出力を出力したい場合や、何らかの出力が必要な場合は、シェル変数への4つの代入を行うことができるかどうかを明確にしてください。 –

+0

開始時に 'cat file'の断片を投稿します – RomanPerekhrest

答えて

0

使用のawk:

awk ' 
    /^Address/  { print "hosta=\""$2"\"\nporta=\""$3"\"" } 
    /^BackupAddress/ { print "hostb=\""$2"\"\nportb=\""$3"\"" }' file 

や、煩雑さを軽減するために二重引用符を保持する変数を使用します。

awk -v q='"' ' 
    /^Address/  { print "hosta="q$2q"\nporta="q$3q } 
    /^BackupAddress/ { print "hostb="q$2q"\nportb="q$3q }' file 

私は、あなたが現在使用しているどのようなコードを確認していません。既にawkで書いたことがあれば、おそらく上記のロジックも組み込むことができます。

+0

あなたの返信をありがとう、ありがとうございます。 – theuniverseisflat

+0

これは行だけを出力しますが、結果を変数として使用することはできません。私はこのコマンドを便利だと思っていますが、私が必要とすることはしません。私はprintコマンドが単に印刷し、変数を設定しないと仮定します。 – theuniverseisflat

+0

'eval' - ' eval $(awk ... file) 'を使って変数を設定することができます。 – codeforester

関連する問題