gpt4 book ai didi

regex - Perl 中的命令行跨多行

转载 作者:行者123 更新时间:2023-12-01 19:02:10 24 4
gpt4 key购买 nike

这是我在 Bash 脚本中的一行 Perl 命令。如何让 s 跨多行更改?

#!/bin/bash

file=$1
echo "processing $file"
perl -0777pe 's/.*<script[ |>].*<\/script>/<script> \.\.\. <\/script>/g' "$file" >"${file}changed.txt"

我正在输入XHTML该脚本中的文件。当开始脚本和结束脚本标记位于同一行时,Perl 命令行可以正常工作。 Perl 在单独的行上找不到开始脚本和结束脚本标记。

正则表达式中的<>有问题吗?

最佳答案

您正在使用-0777这会吞掉整个文件。现在,您需要做的就是添加 /s切换到正则表达式,以便任何字符 .将匹配新行。

您可能还需要将正则表达式更改为非贪婪 .*? ,并且可以通过使用断言和不同的分隔符来简化正则表达式:

#!/bin/bash

file=$1
echo "processing $file"
perl -0777 -pe 's{<script\s*>\K.*?(?=</script>)}{ ... }gs' $file > "${file}changed.txt"

开关:

  • -0777 :吞掉整个文件
  • -p :创建一个while(<>){...; print}循环输入文件中的每一“行”。
  • -e :告诉perl在命令行上执行代码。

关于regex - Perl 中的命令行跨多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com