我对正则表达式很新。 我一直试图使用' 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'
,但这不起作用。
有什么想法吗?
此致
阿贝丁
答案 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
,如果找到,则打印该行然后退出。