<!-- Analytics code start -->
コマンドライン間で<!-- Analytics code end -->
内容を置き換える方法index.html
:
<html>
...
<!-- Analytics code start -->
...
<!-- Analytics code end -->
</body>
</html>
ファイルの内容としてmyanalytics.txt
?
注:多くのファイルに対してこれを行う必要があるため、コマンドラインからこれを実行したいと思います。
ベストアンサー1
解決策は次awk
のとおりです。
awk '/Analytics code start/ { t=1; print; system("cat myanalytics.txt") }
/Analytics code end/ { t=0 }
t==0 { print } ' index.html
(読みやすくするためにコードをインデントしましたが、簡単に1行にすることもできます)
簡単な説明:
t==0
常に現在の行を印刷するとき- 現在の行が
"Analytics code start"
設定と一致すると、t==1
現在の行と必要なファイルが印刷されます。system("cat myanalytics.txt")
- Now
t
は に等しい1
ため、現在行は印刷されませんが、現在行が と一致すると"Analytics code end"
再びt
に設定されるため、0
今から現在行が印刷されます。
メモ:
ファイルは編集されませんindex.html
。変更するには、index.html
次のようにします。
出力を
awk
一時ファイルにリダイレクトしてから、mv
または同じコマンドを使用します。cp
sponge
moreutils
次のようにパッケージで使用してください。awk '[.. commands like above ..]' index.html | sponge index.html