用于将标头添加到文件的shell脚本

Jac*_*ack 8 unix vim shell awk sed

我试图编写一个脚本来为我的.cpp文件添加商标头.我的解决方案如下.

cat trademark.txt test.cpp > new_test.cpp && mv new_test.cpp test.cpp
Run Code Online (Sandbox Code Playgroud)

但是,想知道是否有更好的方法来做到这一点.

anu*_*ava 3

您可以像这样使用 awk:

awk 'NR==FNR && !h {print;h=1;} NR!=FNR{print}' headerFile mainFile > tmpFile
mv tmpFile mainFile
Run Code Online (Sandbox Code Playgroud)

使用 vim/vi:

vim +'0r headerFile|wq' mainFile 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

使用 GNU sed:

sed -i.bak -e '2{x;G};1{h;rheaderFile' -e 'd}' mainFile
Run Code Online (Sandbox Code Playgroud)

使用非 GNU sed:

HDR=$(head -1 headerFile) && sed -i.bak "1s/^/$HDR/" mainFile
Run Code Online (Sandbox Code Playgroud)