【问题标题】:Perl script to find a word and remove all char/word on the first search用于查找单词并在第一次搜索时删除所有字符/单词的 Perl 脚本
【发布时间】:2022-12-06 22:17:06
【问题描述】:

这是我的输入

/prj/mct/2.5/src/mode/session.v
/prj/act/data/1.6/src/log.v

在这里,我试图从上面的路径中找到一个数值,我想在找到数值后删除所有数据/路径。

预期产出

/prj/mct/2.5/.
/prj/act/data/1.6/.

您能否让我知道我应该如何为此编写一个 perl 脚本?

【问题讨论】:

    标签: perl scripting


    【解决方案1】:

    以下单行代码给出了预期的输出:

    perl -pe 's{([^0-9]+[0-9.]+/).*}{$1.}' input.txt
    
    • -p逐行读取输入,处理后打印每一行;
    • s{}{} 是替代品,我们没有使用 s/// 因为我们想要匹配斜杠,我们不喜欢反斜杠,因为它们很难阅读;
    • [0-9] 匹配一个数字,^ 否定它,即 [^0-9] 匹配除数字以外的任何内容;
    • + 匹配前面构造的一次或多次出现,例如[^0-9]+匹配一位或多位非数字;
    • [0-9.]+ 匹配数字和点,即一个版本;
    • (...)括号创建一个捕获组,这里我们捕获每一行的整个开头,直到版本后面的斜线;
    • 我们用捕获的部分替换整行并添加一个点。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 2022-07-31
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多