Text-Processing

如何向 sed 或 awk 流添加頁眉和/或頁腳?

  • September 30, 2021

我有一堆通過 sed 和 awk 的輸出。

如何在輸出前面加上 START 並在答案後面加上 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表示在第 1 行之前插入; $a表示最後一行之後的追加**。**$'…'語法是特定於 bash 的。在其他 shell 中,您應該能夠通過以下方式執行此操作:

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

警告:問題是“我有一堆輸出……”如果您在沒有數據的情況下執行上述命令,您將不會得到任何輸出,因為該命令取決於實際存在 第一行和最後一行。即使輸入為空,其他兩個答案也會給出頁眉和頁腳。

引用自:https://unix.stackexchange.com/questions/226206