同じ行にある1つのファイルに2つのコマンド出力を印刷します。

同じ行にある1つのファイルに2つのコマンド出力を印刷します。

このコンテンツをご覧いただきありがとうございます。

おそらく簡単な質問がありますが、これまでインターネット上で何の助けも見つけることができません。

主に出力を処理する2つのコマンドを持つスクリプトがあります。しかし、両方のコマンドは、私のNagiosシステムが読み込んで表示するテキストファイルの1行で終わる必要があります。 NagiosはWebインターフェイスで2行目の印刷を許可しないため、1行目に入力する必要があります。

注文する。まず、ファイル名を単に印刷します。

ls -tr | tail -n1 > /tmp/output.file

これにより、フォルダ内の最新のファイルが印刷され、ファイル名が/tmp/output.fileに書き込まれます。例: bla-1357135486.xml

2番目のコマンドはもう少し複雑です。ただし、ファイルにフィールドがあります。そしてそれを印刷してください。

head -n3 bla-1357135486.xml |  awk -F 'scheduleName' '{ print $2 }' | sed -r 's/^.{1}//' | sed -r 's/.{1}$//'

このコマンドの出力は次のとおりです。

"ChannelName" "scheduleStart=<date>" "scheduleEnd=<date>"

私はoutput.fileの行が次のようになりたいと思います:

bla-1357135486.xml "ChannelName" "scheduleStart=<date>" "scheduleEnd=<date>"

機能させるには、何を追加する必要がありますか?

答え1

たぶん出力を変数に保存し、その変数をファイルに書き込むだけですか?

output1=`ls -tr | tail -n1`
output2=`head -n3 bla-1357135486.xml |  awk -F 'scheduleName' '{ print $2 }' | sed -r 's/^.{1}//' | sed -r 's/.{1}$//'`

echo "$output1 $output2" > /tmp/output.file

答え2

ある種のテキストエディタを使用している場合は、1つだけ試してください。

awk -F ".scheduleName." '
    NR==1{printf "%s ", FILENAME}
    NR<4{printf "%s ",$2}
    END{print""}' $(ls -t | head -1)

scheduleName2番目のフィールドから最初と最後のシンボルを削除したい行は1つ以上ですか?

関連情報