디렉터리에서 파일 목록을 필터링하는 프로세스가 있습니다( find
큐가 멈췄음을 표시하기 위해 특정 기간보다 오래된 파일이 있는지 확인). 아무것도 반환할 수도 있고 반환하지 않을 수도 있으며, 반환할 경우 우편으로 전달됩니다 cron
.
bash
이 출력을 파이프로 연결하는 프로그램이나 간단한 방법이 있는지 궁금합니다 .어느헤더 라인이 앞에 추가되어 이를 통해 출력됩니다(예: "대기열에 걸린 파일입니다").
답변1
sed 인라인 답변:
find ./files -mtime +90|sed '1s/^/Files stuck in queue:\n/'
답변2
bash
요청한 대로 다른 메서드는 실제로 메서드를 제공하지 않으므로 다음과 같습니다 .
command | while IFS= read -r line; do
(( i )) || { printf '%s\n' 'These are the files stuck in the queue:' ; (( i++ )) ; }
printf '%s\n' "${line}"
done
사용된 모든 명령은 내부 명령입니다 bash
.
출력 라인이 없으면 아무것도 인쇄되지 않습니다. 있는 경우 헤더 행이 인쇄되고 그 뒤에 출력이 표시됩니다 command
.
답변3
입력 스트림을 처리하는 동안 상태를 유지하려는 경우 awk가 가장 좋은 도구인 경우가 많습니다.
이 경우 스트림을 처리하려고 하며 입력이 보이면 헤더를 작성하고 해당 헤더를 썼다는 기록을 작성합니다.
awk '!input_seen { print "header"; input_seen = 1 } 1'
변수가 input_seen
false인 경우(정의되지 않은 경우 기본값은 false) 헤더를 인쇄하고 true(1)로 설정합니다. 마지막으로 1
또 다른 규칙은 간략한 방법입니다. 현재 줄을 인쇄합니다. 1
로 바꿀 수도 있습니다 { print }
.
답변4
또는,
output=$(command)
[[ -n $output ]] && { echo "header"; echo "$output"; }