次の構造のファイルがあります。
[IP ADRESS], [ID-Number], [Name]
[IP ADRESS], [ID-Number], [Name]
[IP ADRESS], [ID-Number], [Name]
...
(括弧内は実際の値)
行の繰り返し中に特定の値(IPアドレス、ID、または名前)をどのように取得(印刷)できますか? (すでに作業を開始したので、「sed」を使用することをお勧めします)
私の目標は、スクリプトを使用して各サーバーにSSHコマンドを送信してIPアドレスを取得し、名前と組み合わせた各コマンドの出力を表示する別のプログラムのID番号と名前を取得することです。監視サービス)。したがって、これらの値のうち1つまたは2つだけを取得できます。
ベストアンサー1
awk
おそらく作業のための最も簡単なツールです。
例入力ファイル(と呼ばれるfoo
)に示すように、行の最後のフィールドを除くすべてのフィールドにはカンマとスペースがあります。
したがって、各行のIPアドレスを印刷するには、次のようにします。
$ awk -F', ' '{print $1}' < foo
各行の ID 番号を印刷するには、次のようにします。
$ awk -F', ' '{print $2}' < foo
各行の名前を印刷するには、次のようにします。
$ awk -F', ' '{print $3}' < foo
awk
さまざまな入力フィールドを結合する出力を生成するために別々のステートメントを作成することもできます。
$ awk -F', ' '{print "ssh " $1 " /path/to/myscript.sh " $2 " " $3}' < foo
ステートメントの出力を調べて目的に合わせて正確で有効であることを確認したら、それをシェルにパイプして簡単に実行できます。
$ awk -F', ' '{print "ssh " $1 " /path/to/myscript.sh " $2 " " $3}' < foo | bash