查找并打印具有匹配模式的第一个单词

查找并打印具有匹配模式的第一个单词

我有一个文本文件,其中有两列:

Name Age

我想搜索这个文件的一部分Name,并在找到第一个匹配项后打印整个Name 示例:

Name                   Age
Ashok Kumar(father)    32
Deepak khan(son)      19
Nirmal khan(son)       21

I want to search for(son) and want to return Deepak khan

我努力了

grep -r 'John' myfile

答案1

grep您可以使用PCRE ( ) 来执行此操作-P

grep -Po '.*(?=\(son\))' file.txt 
  • (?=\(son\))是零宽度正向前瞻模式,确保(son)匹配后紧随其后,即只有 ( -o) 后面的名称(son)才会显示在输出中

例子 :

$ cat file.txt 
Name                   Age
Ashok Kumar(father)    32
Deepak khan(son)      19
Nirmal khan(son)       21

$ grep -Po '.*(?=\(son\))' file.txt 
Deepak khan
Nirmal khan

相关内容