imprimir a saída de 2 comandos em 1 arquivo na mesma linha

2

Obrigado por ver isto.

Eu tenho uma possível pergunta simples, mas não consegui encontrar nenhuma ajuda até agora na internet.

Eu tenho um script que tem principalmente 2 comandos que processam saída. Mas ambos os comandos devem terminar em uma única linha em um arquivo de texto que meu sistema Nagios lê e exibe. Nagios não aceita a segunda linha para imprimir na interface web, então eu preciso tê-los em uma linha.

Os comandos. primeiro uma simples impressão de um nome de arquivo:

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

isto imprimirá o arquivo mais novo na pasta e gravará o nome do arquivo em /tmp/output.file, por exemplo: bla-1357135486.xml

O segundo comando é um pouco mais complexo. mas encontra um campo dentro desse arquivo. e imprime isso.

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

A saída deste comando é assim:

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

Eu quero ter a linha no output.file para ficar assim:

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

O que adicionar para que funcione.

    
por SHLelieveld 25.02.2015 / 12:06

2 respostas

2

Talvez armazenando a saída em variáveis e escrevendo essas variáveis no arquivo?

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
    
por 25.02.2015 / 12:35
1

Se você usar algum editor de texto, tente usar apenas um:

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

Espero que haja mais de 1 scheduleName na linha para remover o primeiro e último símbolos do segundo campo?

    
por 25.02.2015 / 14:31