이 콘텐츠를 봐주셔서 감사합니다.
아마도 간단한 질문이 있지만 지금까지 인터넷에서 어떤 도움도 찾을 수 없습니다.
주로 출력을 처리하는 2개의 명령이 있는 스크립트가 있습니다. 그러나 두 명령 모두 내 Nagios 시스템이 읽고 표시하는 텍스트 파일의 한 줄로 끝나야 합니다. Nagios는 웹 인터페이스에서 두 번째 줄 인쇄를 허용하지 않으므로 첫 번째 줄에 입력해야 합니다.
주문하다. 먼저 파일 이름을 간단히 인쇄하십시오.
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)
scheduleName
두 번째 필드에서 첫 번째 및 마지막 기호를 제거하려는 행이 1개 이상입니까 ?