简而言之
有什么方法可以 bash 命令行:echo "***some code***" >> "***all files of some type***"在文件中包含某个字符串的行之后,例如<body?
在龙
我必须将谷歌分析添加到网站。它有一个过去几年的东西档案。
对于最近的一些存档年份,我刚刚添加了:
...
</head>
<body<?php if ($onpageload != "") { echo " onload=\"$onpageload\""; }?>>
<?php include_once("analyticstracking.php") ?>
...
Run Code Online (Sandbox Code Playgroud)
进入 common_header.php 文件
对于一些早期的东西,他们没有制作 common_header.php 文件。因此,对于管理没有通用标题的年份的文件夹,有很多 html 文件需要此行:
<?php include_once("analyticstracking.php") ?>
是否有某种方法来 bash 命令行:echo "<?php include_once("analyticstracking.php") ?>" >> "*.html"在包含某个字符串的文件之后,例如<body
该站点使用 php、python 和 html(带有一些 javascript css 等)进行管理。
我在 ubuntu 上。另请注意,我对此类网页较新,因此如果我的问题在某种程度上是错误或愚蠢的问题,请告诉我。
例如,如果您想在包含</body>, 就地编辑所有文件的行之前添加一行,您可以
sed -i -e '\@</body>@i\New stuff' *.html
Run Code Online (Sandbox Code Playgroud)
同样的,但之后该行匹配<!-- insert here -->
sed -i -e '/<!-- insert here -->/a\New stuff' *.html
Run Code Online (Sandbox Code Playgroud)
sed用一个s命令跨越多行是相当麻烦的。面向行的命令是i\(insert before) 和a\(insert after)。
你的特殊情况是
sed -i -e '/<body/a\<?php include_once("analyticstracking.php") ?>' *.html
Run Code Online (Sandbox Code Playgroud)
但前提是您的body标签没有跨越多行的属性。html/xml使用不知道其结构的文本工具编辑文件总是有问题的,但如果您确定正在编辑的文件中的实际文本,它可以工作。