在文件中查找搜索字符串并在同一行中打印下一个单词

时间:2016-01-11 06:03:23

标签: linux perl unix

例如,考虑文件“abc.txt”具有以下内容:

#--------------- Module Id ---------------
MODULE_ID='ACXX'
MODULE_ID='BCXX'
MODULE_ID='CCXX'

现在,我想在该文件中搜索“MODULE_ID”关键字,如果找到,则应在该引号中打印值,即"1"
我可以在Linux中知道如何做到这一点吗?

我尝试了以下但未能成功:

grep -o 'MODULE_ID='[^']*'' uk.spec > results.txt

grep -Po 'MODULE_ID="\K.*?(?=")' uk.spec 

perl -ne 'if(m/MODULE_ID="(.*?)"/){ print $1 . "\n"; }'

2 个答案:

答案 0 :(得分:0)

试试这个:

open my $fh, "<", "file.txt" or die $!;

while (<$fh>)
{
    chomp;
    if (m/^MODULE_ID='(.*)'/)
    {
        print qq{"$1"}, "\n";
    }
}

____DATA____
MODULE_ID='ACXX'
MODULE_ID='BCXX'
MODULE_ID='CCXX'

输出:

"ACXX"
"BCXX"
"CCXX"

答案 1 :(得分:-2)

一个简单的Perl解决方案:

#/usr/bin/perl -ne
chomp $_; if($_ =~ /MODULE_ID=(.*)/) { print "$1\n"; }

这可以作为shell one-liner运行:

perl -ne 'chomp $_; if($_ =~ /MODULE_ID=(.*)/) { print "$1\n"; }' abc.txt