regex - 仅返回正则表达式匹配项,而不返回整行

标签 regex sed grep

我有一个多行文档,希望从中提取特定的关键字,然后提取其中的单词。看起来像这样:

This is key word1 line 1.

This is line 2.

This is key word2 line 3. 

如果我使用egrep 'key [^s]+ ',则输出为:

This is key word1 line 1.

This is key word2 line 2. 

但是,我希望输出仅是匹配项,而不是整行,即:

key word1

key word2

有没有办法做到这一点?

最佳答案

grep(1) 具有-o标志,该标志仅输出该行的匹配部分。从man page:

  -o, --only-matching
      Show only the part of a matching line that matches PATTERN.


但是,您的模式不适合获得所需的输出。尝试:

$ egrep -o 'key \w+' file 
key word1
key word2

关于regex - 仅返回正则表达式匹配项,而不返回整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539494/

相关文章:

java - 将用于跳过缺失信息的正则表达式从 python 转换为 java-7

PHP 正则表达式 preg_match_all div 不相同 id

macos - 执行此命令的 Mac OS X 方式是什么

bash - 使用 sed 插入换行符 (\n)

regex - 正则表达式与egrep的匹配部分

bash - 如何将 grep 的值分配给变量并与字符串连接?

regex - PowerShell 字符串匹配和管道字符

Powershell 中的 RegEx,合并替换调用

replace - 如何使用 sed 立即交换基于模式的文本?

grep - 如何使用 grep 在平面文件数据库的字段中查找特定单词?