我有一个文本文件,其中包含下述格式的数据..
@rectype='ABC' @recname='123' @rec_id='1K2j' etc...
@rectype='DEF' @recname='matin' @rec_id='458i' etc...
@rectype='ABC' @recname='John' @rec_id='lom0' etc...
@rectype='GHI' @recname='Kalme, @rec_id='pl90' etc...
@rectype='KLM' @recname='Kitty' @rec_id='987k' etc...
@rectype='ABC' @recname='OMR' @rec_id='lo09' etc...
现在,我必须删除所有@rectype =' ABC' ...在输入文件中有多行此类。这是一种紧急的,因为我是不是一个perl编码器,我发现很难找到方法。
请建议!!!
注意:我只需要在输入文件中进行更改。我不需要创建单独的输出文件。
答案 0 :(得分:5)
您不需要在Perl中执行此操作。您可以使用grep
工具。
grep -v "@rectype='ABC'" input_file > output_file
grep -v
表示“打印与此表达式不匹配的每一行。”
答案 1 :(得分:2)
perl -i -ne 'print if !/\@rectype = \047ABC\047/x' text_file
答案 2 :(得分:1)
#!/usr/bin/perl
use warnings;
use strict;
use File::Slurp;
my $output = 'output.txt';
open my $outfile, '>', $output or die "Can't write to $output: $!";
my @array = read_file('input.txt');
for (@array){
next if ($_ =~ /^\@rectype='ABC'/);
print $outfile $_ ;
}
输出(保存到'output.txt'):
@rectype='DEF' @recname='matin' @rec_id='458i' etc...
@rectype='GHI' @recname='Kalme, @rec_id='pl90' etc...
@rectype='KLM' @recname='Kitty' @rec_id='987k' etc...