sed 또는 awk 스트림에 머리글 및 / 또는 바닥 글을 추가하는 방법은 무엇입니까? 어떻게해야합니까? 예를 들어 All this code on all these

나는 sed와 awk를 통과하는 많은 출력을 가지고 있습니다.

출력에 시작 접두사를 붙이고 대답에 접미사를 END로 붙이려면 어떻게해야합니까?

예를 들어

All this code
on all these lines
and all these

어떻게 얻을 수 있습니까?

START
All this code
on all these lines
and all these
END

?

나의 시도는 :

awk '{print "START";print;print "END"}'

하지만 나는

...
START
    All this code
END
START
    on all these lines
END
START
    and all these
END



답변

jasonwryan이 지적한 대로 작동합니다 .

awk 'BEGIN{print "START"}; {print}; END{print "END"}'


답변

이것은에서 수행 할 수 있습니다 sed

sed -e $'1i\\\nSTART' -e $'$a\\\nEND'

1i방법 I가 1 행 전 nsert; 마지막 줄 뒤의 보류를 $a의미 합니다 . $'…'구문은 bash는 다릅니다. 다른 쉘에서는 다음을 사용하여이를 수행 할 수 있어야합니다.

sed -e '1i \ START'- Enter
e '$ a \ Enter
END'Enter


답변

이미 sed를 사용하고 있다면 1첫 번째 줄과 $마지막 줄을 일치시키는 데 사용할 수 있습니다 ( Scott ‘s answer 참조 ). 이미 awk를 사용하고 있다면 BEGIN블록을 사용 하여 첫 번째 줄 전에 코드를 실행 하고 블록을 사용 END하여 마지막 줄 다음에 코드를 실행할 수 있습니다 ( Michael Durrant의 답변 참조 ).

당신이해야 할 모든 단지 사용, 헤더와 바닥 글을 추가하는 경우 echocat.

echo START
cat
echo END

파이프 라인에서 여러 명령을 실행 { … }하려면 구문 분석기가 단일 복합 명령임을 파서에 알리십시오.

content-generator |
{ echo START; cat; echo END; } |
postprocessor


답변