正则表达式恰好匹配一行

时间:2014-04-27 18:24:23

标签: regex grep

我对正则表达式很新。 我一直试图使用' grep'与正则表达式一起从文件中提取一行。 我以为有些人可能会帮忙:

我的文件有以下几行:

c total length of integration
ntotal= 0
c total number of updates
ntotal= 20
c total number of outputs 
ntotal= 10

所以我想知道如何提取第一次出现的' ntotal = 0'

我尝试使用grep ^c.*tot.*\n? 'filename',但这不起作用。

有什么想法吗?

此致

阿贝丁

2 个答案:

答案 0 :(得分:2)

grep有一个标记-m,用于设置要匹配的最大匹配数,

从而

grep -m 1 -P '^ntotal *= *[0-9]+$' < filename

使用^启动表达式意味着这是行的开头,$表示行的结尾。 -P标志表示启用了扩展正则表达式模式(Perl样式)。

我已添加*,以便允许ntotal=之间存在任意数量的空格(零或更多)。

< filename表示您使用名为filename的文件内容作为输入。

答案 1 :(得分:1)

要获得第一个ntotal,您可以使用awk,如下所示:

awk '/ntotal/ {print $0;exit}' file
ntotal= 0

搜索ntotal,如果找到,则打印该行然后退出。