在同一行上打印 1 个文件中 2 个命令的输出

在同一行上打印 1 个文件中 2 个命令的输出

感谢您查看此内容。

我有一个可能的简单问题,但到目前为止我无法在互联网上找到任何帮助。

我有一个脚本,主要有 2 个处理输出的命令。但这两个命令必须以我的 Nagios 系统读取和显示的文本文件中的一行结束。 Nagios 不接受在 Web 界面中打印第二行,因此我需要将它们放在第一行上。

命令。首先简单打印文件名:

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

这将打印文件夹中的最新文件并将文件名写入 /tmp/output.file 例如:bla-1357135486.xml

第二个命令有点复杂。但在该文件中找到一个字段。并打印出来。

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

如果您使用某种文本编辑器,请尝试仅使用一种:

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

我希望是否有超过 1 个scheduleName行可以从第二个字段中删除第一个和最后一个符号?

相关内容