grep 精确文本仅输出?

grep 精确文本仅输出?

假设我有这行文字:

#cat numbers.txt
Numbers!!!! John=55 May=43 RandomData Alex=72 Ben=90 End

但我只对约翰的号码感兴趣。如何删除所有其他我不想要的东西并将输出变成:

#cat numbers.txt | <some command line magic>
John=55

注意:我不知道“John”在文本文件中的位置,也不知道分配给 John 的号码是多少。

答案1

我会做:

awk '{ print $2 }' numbers 
John=55

前提是您想要的信息始终位于第二个字段中。

编辑:按照你的编辑,因为您不知道 John 在文件中的位置,所以我会这样做:

egrep -o 'John=[0-9]{2}' numbers 
John=55

答案2

如果您只想要 John= 和以下空格分隔符之间的内容(可以是任意数量的数字,并且您不需要提前知道)

grep -Po 'John=\K.*?(?= )' numbers

相关内容