我想從我的文件中存在的字符串中刪除單詞Z或ZN和LVT,但我無法得到它。有人可以檢查我的代碼。使用Perl從字符串中刪除匹配的單詞
輸入
abchsfk/jshflka/ZN (cellLVT)
asjkfsa/sfklfkshfsf/Z (mobLVT)
asjhfdjkfd/sjfdskjfhdk/hsakfshf/Z (celLVT)
asjhdjs/jhskjds/ZN (abcLVT)
shdsjk/jhskd/ZN (xyzLVT)
輸出
abchsfk/jshflka cell
asjkfsa/sfklfkshfsf mob
asjhfdjkfd/sjfdskjfhdk/hsakfshf cel
asjhdjs/jhskjds abc
shdsjk/jhskd xyz
CODE:
if ($line =~ /LVT/ && ($line =~ /ZN/ || $line =~ /Z/))
#### matches the words LVT and (Z or ZN)
{
my @names = split//, $line; ##### splits the line
$names[2] =~ s/\/Z|/ZN//g; #### remove Z or ZN
$names[3] =~ s/\(|LVT\)//g ; #### remove LVT & braces
print OUT " $names[2] $names[3] \n"; #### print
}
爲什麼不'$線=〜S/\/ZN | LVT //克;' – sln
@sln?謝謝。我想要一起移除「/ Z」和「/ ZN」,而不是僅移除Z或ZN。我也想去掉大括號。所以我試圖先將它拆分,然後嘗試逐個刪除它。 – SKG
@sln。我從你提出的想法中嘗試了這種方式。它爲我工作。 '$ line =〜s/\/ZN?| \(| LVT \)// g;' – SKG