내가 다음 스크립트를 썼다 출력에 추가 문자 (작은 따옴표)를 제공합니다펄 정규식 대체 나에게
#!/bin/bash
# Add Google Analytics code to every html file in the current folder and subfolders
codice="<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-X', 'example.net');
ga('send', 'pageview');
</script>"
original_string=$(printf %q "$codice") # it expands the string in a shell-escaped format
string_to_search='/'
string_to_replace='\/'
result_string="${original_string//$string_to_search/$string_to_replace}" # it escapes also slashes "/"
recursive() {
for file in *; do
if [ -d "$file" ]; then
(cd "$file"; recursive)
fi
if [[ "$file" =~ \.html?$ ]]; then
perl -i.bak -e 'undef $/; $_=<>; s/<\/body>\n<\/html>/\n'"${result_string}"'\n<\/body>\n<\/html>/gi; print' $file
echo $file fatto
fi
done
}
recursive
이것은 예를 들어 입력 파일입니다 스크립트 실행 후
<html>
<head>
</head>
<body>
test page
</body>
</html>
, 파일은 다음과 같이 수정됩니다 :
<html>
<head>
</head>
<body>
test page
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXXX-X', 'example.net');
ga('send', 'pageview');
</script>'
</body>
</html>
이상한 것이 있습니다 : 왜 여분의 문자가 있습니까? 르 인용구) 스크립트 끝 태그 후? 어떤 도움 주셔서 감사합니다
저는 Perl의 초보자입니다. 어쩌면 첫 번째 줄은 #!/usr/bin/perl (첫 번째 슬래시를 놓쳤을 것임) 일 것입니다. 그러나 코드가 내 컴퓨터에서 실행되지 않습니다.이 오류가 있습니다. /usr/share에 서브 루틴을 지정하지 않았습니다. /perl/5.14/File/Find.pm 라인 1064 –
파일에 대한 세부 정보 : 여기에 있어야합니다 : http://perldoc.perl.org/File/Find.(I 그에 따라 수정하여야한다)', 이'(".", \ & insert_codie를) 찾을 :; 그래서' 는'발견 (\ & 원, @directories_to_search) : - 내 부분에 HTML 오타 다른 방법으로 주위해야한다 – Sobrique
좋은 조언을 위해 @Sobrique +1. Btw,'next' 대신'return'을 원합니다. 나는 또한 코드를 강화하려고했지만 새로운 게시물을 만드는 것이 더 적절하다고 느껴지는 많은 변화를 가져 왔습니다. – Miller