-2

我有一个文本文件,其中包含以下格式的数据..

@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 编码器,我发现很难找出路。

请推荐!!!

注意:我只需要在输入文件中进行更改。我不需要创建单独的输出文件。

4

3 回答 3

5

您不需要在 Perl 中执行此操作。您可以使用该grep工具。

grep -v "@rectype='ABC'" input_file > output_file

grep -v表示“打印与此表达式不匹配的每一行。”

于 2013-09-05T17:03:44.223 回答
2
perl -i -ne 'print if !/\@rectype = \047ABC\047/x' text_file
于 2013-09-05T17:01:39.900 回答
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...
于 2013-09-05T17:03:34.167 回答