簡體   English   中英

Perl:如何逐行搜索文本文件以查找特定模式?

[英]Perl: How do I search a text file line by line to find a specific pattern?

我想在文本文件每一行的開頭找到一個字符串STRING 到目前為止,我有:

open(FILEHANDLE, "sample.txt")

while(my $line = <$FILEHANDLE>){
    if($line =~ PATTERN){
       doSomething();
    }
}

我的問題是:我應該為PATTERN放置什么以使代碼正常工作? 我知道STRING將會在文本文件每一行的開頭,並且STRING后面將是空格。 STRING可能會更改,因此它必須在變量中且不能進行硬編碼。

到目前為止,我只能想到使用Python的方式:

PATTERN = r"^" + re.escape(STRING) + r"\s"
if re.search(PATTERN, line):
    doSomething();

如何將其翻譯為Perl?

另外,如果這是錯誤的Perl語法,請告訴我,以便對其進行修復。

您快要在那里了,只需要知道這一點即可. 是字符串連接,不是+ 並且那個quotemeta()確實進行了字符串轉義。

my $pat = "^".quotemeta($string)."\s" ;
while(my $line = <$FILEHANDLE>){
  if($line =~ /$pat/){
    doSomething();
  } 
}

您正在尋找的是quotemeta

use strict;
use warnings;
use autodie;

my $file = 'sample.txt';
my $literal_string = '...';

open my $fh, '<', $file;

while (my $line = <$fh>){
    if ($line =~ /^\Q$literal_string\E/){
       doSomething();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM