我需要使用perl删除dataRecord中的数据记录符号和任何空行。
例如,
$/ = "__Data__"
__Data__
riririririr
djkfkdfjkdjkf
dghghghghghghg
(blank line)
my @dataRecord = split(/\n/);
grep(/(__Data__|/,@dataRecord);
如何根据grep过滤删除数组中不需要的项目?
答案 0 :(得分:3)
这应该有效:
my @filered_list = grep { length( $_ ) and $_ ne '__Data__' } @dataRecord;
答案 1 :(得分:3)
不确定输入记录分隔符在这里发生了什么,除非使用隐式$_
,否则split的使用无效。
要回答这个问题,请使用!
运算符来否定匹配的意义:
@dataRecord = grep { ! /__Data__|^$/ } @dataRecord;
对于这种情况,!
也可以替换为not
:
@dataRecord = grep { not /__Data__|^$/ } @dataRecord;
答案 2 :(得分:0)
好吧,如果你想要符合条件的元素:
@dataRecord = grep(/expr/,@dataRecord);
(假设数组中不需要的元素是不通过匹配正则表达式的元素)。