9

.cpp ファイルに商標ヘッダーを追加するスクリプトを作成しようとしていました。私の解決策は次のとおりです。

cat trademark.txt test.cpp > new_test.cpp && mv new_test.cpp test.cpp

ただし、これを行うより良い方法があるかどうかを知りたいと思っていました。

4

3 に答える 3

3

すでに回答を受け入れていますが、もう 1 つの方法を提案します。

sed -i -e '1r trademark.txt' -e '1{x;d;};2{H;g;}' test.cpp 
于 2013-07-17T12:45:35.903 に答える
3

次のように awk を使用できます。

awk 'NR==FNR && !h {print;h=1;} NR!=FNR{print}' headerFile mainFile > tmpFile
mv tmpFile mainFile

vim/vi の使用:

vim +'0r headerFile|wq' mainFile 2>/dev/null

GNU sed の使用:

sed -i.bak -e '2{x;G};1{h;rheaderFile' -e 'd}' mainFile

非 GNU sed の使用:

HDR=$(head -1 headerFile) && sed -i.bak "1s/^/$HDR/" mainFile
于 2013-07-17T11:46:54.100 に答える
0

vim を使用している場合は、ultisnipsを確認してください。それはこれを行うことができます

たとえば、次のスニペットを定義して、パブリック ドメイン ヘッダーをファイルに追加しました。

snippet pd "Public domain dedication" b
#
# Author: ${1:Roland Smith} ${2:<myemail@mydomain.com>}
# \$Date: `!v strftime("%F %T %z")` \$
#
# To the extent possible under law, $1 has waived all copyright and
# related or neighboring rights to `!v expand('%:t')`. This work is published 
# from the Netherlands. See http://creativecommons.org/publicdomain/zero/1.0/ 

endsnippet

このスニペットを使用するpdには、vim の行頭に挿入して<tab>. これにより、スニペットが展開され、$Date$タグに現在の日付が入力され、ファイル名が入力されます ( を使用expand)。次に、最初の変数である著者の名前を強調表示し、必要に応じて変更できるようにします。これにより、その変数の以降のすべてのインスタンスが自動的に変更されます。を使用<ctrl>jすると、次の変数である作成者の電子メール アドレスに移動します。この変数も、必要に応じて変更できます。

vimscript コマンドを使用できます (引用符の間と先頭に を付けます!v)。vim が Python サポート付きでコンパイルされている場合は、Python コードを で使用することもできます!p

于 2013-07-21T12:18:30.897 に答える