我寫了一個腳本格式的 perl 代碼。這是腳本:
#!/usr/bin/perl
use strict;
use warnings;
while(<>){
chomp;
my @s = split /\t/,$_;
if($_ =~ /NM:i:(\d ) and $1 >= 7/){
print $_,"\n";
}
}
我想以 perl one liner 方式撰寫這個 perl script.pl 代碼。Itried這樣的事情,但它沒有做我期望它做的事情:
perl -ne '@s = split; if $_ =~ /NM:i:(\d )/{ print if $1 >=7}'
如何解決這個問題?謝謝
uj5u.com熱心網友回復:
perl -ne'print if /NM:i:(\d )/ && $1 >= 7'
您在那里的選項卡上有一個不必要的拆分。但是,假設您確實需要它。如果是這樣,你可以使用
perl -F'\t' -lane'print if $F[0] =~ /NM:i:(\d )/ && $1 >= 7'
這僅與第一個欄位匹配。
這是否意味著在我的 script.pl 中,我可以避免 2 個 if 陳述句?
是的。
除了作用域差異外,以下內容是等效的:
if (f()) {
if (g()) {
h();
}
}
if (f() && g()) {
h();
}
h() if f() && g();
f() && g()
and h();
uj5u.com熱心網友回復:
我傾向于將這些問題視為要跳過的行而不是要輸出的行。但是,條件的組合與池上已經展示的相同:
perl -pe 'next unless(/NM:i:(\d )/ && $1 >= 7)' ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379643.html
標籤:perl
