Làm cách nào để thêm tiêu đề và / hoặc chân trang vào luồng sed hoặc awk?


13

Tôi có một loạt các đầu ra đi qua sed và awk.

Làm cách nào tôi có thể thêm tiền tố đầu ra bằng START và hậu tố câu trả lời với END?

Ví dụ, nếu tôi có

All this code
on all these lines
and all these

Làm thế nào tôi có thể nhận được:

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

?

Nỗ lực của tôi là:

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

nhưng tôi đã nhận

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

Câu trả lời:



11

Điều này có thể được thực hiện sedvới

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

1icó nghĩa là tôi nsert trước dòng 1; $acó nghĩa là một ppend sau dòng cuối cùng. Các $'…'cú pháp là bash cụ thể. Trong các shell khác, bạn sẽ có thể làm điều này với:

sed -e '1i \ Enter
BẮT ĐẦU' -e '$ a \ Enter
END'Enter

8

Nếu bạn đã sử dụng sed, bạn có thể sử dụng 1để khớp dòng đầu tiên và $khớp với dòng cuối cùng (xem câu trả lời của Scott ). Nếu bạn đã sử dụng awk, bạn có thể sử dụng một BEGINkhối để chạy mã trước dòng đầu tiên và một ENDkhối để chạy mã sau dòng cuối cùng (xem câu trả lời của Michael Durrant ).

Nếu tất cả những gì bạn cần làm là thêm một tiêu đề và chân trang, chỉ cần sử dụng echocat.

echo START
cat
echo END

Trong một đường ống dẫn, để chạy nhiều lệnh, hãy sử dụng { … }để nói với trình phân tích cú pháp rằng chúng là một lệnh ghép đơn.

content-generator |
{ echo START; cat; echo END; } |
postprocessor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.