Regex Perl替换未按预期工作

Regex Perl替换未按预期工作,regex,perl,Regex,Perl,我想使用perl命令将多个js文件块替换为一个小型版本 当我在在线网站上测试它时,它是有效的 但当我在命令行中运行时,它不会 echo '<!doctype html> <html> <head> <script src="lib/angular.js"></script> <!-- build:js ../ute.min.js --> <script src="ap

我想使用perl命令将多个js文件块替换为一个小型版本

当我在在线网站上测试它时,它是有效的 但当我在命令行中运行时,它不会

echo '<!doctype html>
    <html>
    <head>
      <script src="lib/angular.js"></script>
      <!-- build:js ../ute.min.js -->
      <script src="app/app.js"></script>
      <script src="app/services/uteEndpoint.js"></script>
      <!-- endbuild:js -->' |  perl -pe 's/<!-- build:js ([^ ]+) -->[^\!]+<!-- endbuild:js -->/<script src="$1"><\/script>/gm'
我在命令行中做错了什么

我已经在这里进行了测试,我的预期输出是

<!doctype html>
<html>
<head>
  <script src="lib/angular.js"></script>
  <script src="../ute.min.js"></script>

默认情况下,Perl逐行处理输入。由于要处理多行,因此需要启用段落模式

perl -00pe 's~<!-- build:js ([^ ]+) -->[^\!]+<!-- endbuild:js -->~<script src="$1"></script>~gm'

例如:


默认情况下,Perl逐行处理输入。由于要处理多行,因此需要启用段落模式

perl -00pe 's~<!-- build:js ([^ ]+) -->[^\!]+<!-- endbuild:js -->~<script src="$1"></script>~gm'

例如:


谢谢,我需要学习什么是slurp模式。学习永无止境:-00是段落模式,它只是巧合地工作,因为输入没有两个连续的换行符。更多信息请参见perldoc-v$/是的,我就是这么说的。Perl根据两个换行符拆分输入。我认为这里的slurp这个词是错误的。所以我补充说-0777pe@AvinashRaj嗯,使用-00是错误的,不管你怎么称呼它。使用-0777是正确的。谢谢,我需要学习什么是slurp模式。学习永无止境:-00是段落模式,它只是巧合地工作,因为输入没有两个连续的换行符。更多信息请参见perldoc-v$/是的,我就是这么说的。Perl根据两个换行符拆分输入。我认为这里的slurp这个词是错误的。所以我补充说-0777pe@AvinashRaj嗯,使用-00是错误的,不管你怎么称呼它。使用-0777是正确的。
$ echo '<!doctype html>
>     <html>
>     <head>
>       <script src="lib/angular.js"></script>
>       <!-- build:js ../ute.min.js -->
>       <script src="app/app.js"></script>
>       <script src="app/services/uteEndpoint.js"></script>
>       <!-- endbuild:js -->' |  perl -0777pe 's/<!-- build:js ([^ ]+) -->[^\!]+<!-- endbuild:js -->/<script src="$1"><\/script>/gm'
<!doctype html>
    <html>
    <head>
      <script src="lib/angular.js"></script>
      <script src="../ute.min.js"></script>