web-dev-qa-db-ja.com

2つのコマンドの出力を同じファイルの1つのファイルに出力する

これを見てくれてありがとう。

簡単な質問の可能性がありますが、これまでインターネットでヘルプを見つけることができませんでした。

出力を処理する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>"

機能させるために追加するもの。

3
SHLelieveld

たぶん、出力を変数に保存し、これらの変数をファイルに書き込むことによって?

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
3
user236012

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

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

最初のシンボルと最後のシンボルを2番目のフィールドから削除するために、1つ以上のscheduleNameが並んでいるといいのですが。

1
Costas