【问题标题】:Search for substring and store another part of the string in Perl在 Perl 中搜索子字符串并存储字符串的另一部分
【发布时间】:2013-10-02 05:19:40
【问题描述】:

我对 Perl 还很陌生。我正在尝试逐行读取文件,在每一行中搜索特定模式。如果找到模式,那么我需要将同一行的不同部分存储在不同的变量中。例如,假设这些是文件中的行 -

01 Started Job 1 Calculation
02 Started Job 2 Publish
03 Completed Job 1 Calculation
04 Started Job 3 Upload
05 Completed Job 2 Publish

我正在每一行中搜索“Started Job”一词。如果找到,我需要将以下作业编号和以字符串开头的作业的名称存储,并将记录 ID(行中的第一个单词)存储到不同的字符串中。到目前为止,这是我拥有的代码 -

while (<READLOG>) 
  {
         if (/Started Job/)
         {
               my @words = split(" ",$_);
               my $recordID = $words[0];
               my $Job = $words[3] . " " . $words[4];
         } 
  } 

这暂时有效,但我想知道是否有更好的方法来做到这一点?喜欢存储“Started Job”后面的所有单词?

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: string perl file


    【解决方案1】:

    您应该更多地研究正则表达式。可以通过使用匹配组来存储“开始工作”之后的单词,即/Started Job(.*)$/。然后,您将在 $1 中找到该行的其余部分。

    【讨论】:

    • 这太简单了!非常感谢:)
    • 是的,Perl 真的很简单。只要保持干净,否则,您最终将无法阅读两个月前写的内容;)
    • /Started Job/p,其余行在${^POSTMATCH}
    猜你喜欢
    • 2012-08-16
    • 2020-01-06
    • 2023-02-02
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多