Grep并打印匹配的单词和下一个单词

时间:2014-06-24 05:39:33

标签: linux unix grep

我有一个文本文件install.history

Wed June 20 23:16:32 CDT 2014, EndPatch, FW_6.0.0, SUCCESS

我只需打印从EndPatch开始到FW_6.0.0, SUCCESS结束的字词。 我下面的命令只打印出EndPatch,所以我需要做什么才能打印出剩余的单词,这样我的结果就是:

EndPatch, FW_6.0.0, SUCCESS

这是我的命令:

  grep -oh "EndPatch[[:alpha:]]*" 'install.history'

4 个答案:

答案 0 :(得分:3)

这可以说更容易使用sed

sed -n 's/.*EndPatch, //p' install.history

在EndPatch之后得到这个词:

sed -n 's/.*EndPatch, \([^,]*\).*/\1/p' install.history

或:

sed -n 's/.*EndPatch, //p' install.history | cut -d, -f

答案 1 :(得分:1)

您可以尝试以下grep命令来获取从EndPatch到最后一个

的所有内容
grep -oP 'EndPatch, (.*)$' file

grep -o 'EndPatch.*$' file

示例:

$ grep -oP 'EndPatch, (.*)$' file
EndPatch, FW_6.0.0, SUCCESS
$ grep -o 'EndPatch.*$' file
EndPatch, FW_6.0.0, SUCCESS

或者

您可以尝试使用以下命令获取EndPatch,

之后的所有字符
$ grep -oP 'EndPatch, \K(.*)$' file
FW_6.0.0, SUCCESS

答案 2 :(得分:0)

正则表达式匹配需要grep -e

grep -oh 'install.history' -e "EndPatch[[:alpha:]]*"

答案 3 :(得分:0)

您可以使用awk

awk -F "EndPatch, " '{print FS$2}' file
EndPatch, FW_6.0.0, SUCCESS