这教程就是写给纯小白的,看不懂的说明你连小白都不算,洗洗睡吧~
以最近的例子,需求是需要对所有静态文件进行内容修改,即
将此代码粘贴到页面的 <head> 部分中,并使其尽可能靠近顶部位置:
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);
})(window,document,'script','dataLayer','GTM-xxxxx');</script>
<!-- End Google Tag Manager -->
逻辑转换为:
将所有html后缀的文件内容中
</head>
替换为
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);
})(window,document,'script','dataLayer','GTM-xxxxxx');</script>
<!-- End Google Tag Manager -->
</head>
实现涉及指令find、sed,有兴趣的自己了解总结。
完整操作方法:
1.notepad++新建一个文件,贴入目标内容:
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);
})(window,document,'script','dataLayer','GTM-xxxxxx');</script>
<!-- End Google Tag Manager -->
</head>
Ctrl+H,调出批量替换功能,查找目标
\r\n
替换为
换行符
查找模式为:扩展(\n,\r,\t,\0,\x…)
点击全部替换,结果如下:
<!-- Google Tag Manager -->换行符<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':换行符new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],换行符j=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=换行符'https://www.googletagmanager.com/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);换行符})(window,document,'script','dataLayer','GTM-xxxxxx');</script>换行符<!-- End Google Tag Manager -->换行符</head>
之后,切换查找模式为普通。
由于存在/和!(如存在”,也需要转义),需要进行转义,分别替换
/
为
\/
替换
!
为
\!
结果如下:
<\!-- Google Tag Manager -->换行符<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':换行符new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],换行符j=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=换行符'https:\/\/www.googletagmanager.com\/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);换行符})(window,document,'script','dataLayer','GTM-xxxxxx');<\/script>换行符<\!-- End Google Tag Manager -->换行符<\/head>
将换行符 三个字替换为
\n
得到最终替换字符串:
<\!-- Google Tag Manager -->\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=\n'https:\/\/www.googletagmanager.com\/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);\n})(window,document,'script','dataLayer','GTM-xxxxxx');<\/script>\n<\!-- End Google Tag Manager -->\n<\/head>
替换指令:
find . -type f -name "*.文件后缀" -exec sed -i "s/目标字符串/最终替换字符串/g" {} +
其中文件后缀为html
目标字符串转义后的即:
</head>
最终替换字符串就是上面得到的部分,完整指令为:
find . -type f -name "*.html" -exec sed -i "s/<\/head>/<\!-- Google Tag Manager -->\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer' '&l='+l:'';j.async=true;j.src=\n'https:\/\/www.googletagmanager.com\/gtm.js id='+i+dl;f.parentNode.replaceBefore(j,f);\n})(window,document,'script','dataLayer','GTM-xxxxxx');<\/script>\n<\!-- End Google Tag Manager -->\n<\/head>/g" {} +
Linux下,利用cd指令进入要处理的目录,执行上面的完整指令既可实现所有html批量替换。
补充说明,n在Linux下表示换行符,至于转义是什么意思,不理解的自己查。
本方法旨在抛砖引玉,其他字符串的替换请自行举一反三。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。