在Linux中从特定文本行中打印一个部分

时间:2019-03-04 02:09:51

标签: linux bash unix

我有一个约10,000行的.out文件。在文件的中间,我有一堆包含要打印的值的行。

例如:

...~5000 lines here...   
VALUE 1 429.62 a 394.55 b 865.66 c  
bla-bla-bla1  
bla-bla-bla2   
bla-bla-bla3  
VALUE 2 535.55 a 591.14 b 152.88 c   
bla-bla-bla4   
bla-bla-bla5   
VALUE 3 5015.2 a 590.34 b 41.444 c   
bla-bla-bla6  
....~5000 lines until the end~... 

我希望打印以下内容(仅粗体文本值):

865.66   
152.88   
41.444 

到目前为止,我可以做到:

grep -r "VALUE" filename 

然后返回:

VALUE 1 429.62 a 394.55 b 865.66 c  
VALUE 2 535.55 a 591.14 b 152.88 c  
VALUE 3 5015.2 a 590.34 b 41.444 c  

我该怎么做才能获得想要的输出?我的目标是能够将打印的输出复制并粘贴到电子表格中,而无需添加任何其他内容。

2 个答案:

答案 0 :(得分:0)

如果只有一个文件,为什么需要-r来进行grep?

如果要使用grep(而不是像其他人所建议的那样使用awk),可以执行以下操作:选择一个grepped字段可以使用cut

grep ^VALUE filename | cut -d ' ' -f 7

^可以确保仅选择VALUE位于行首的那些行。

此解决方案假定字段之间仅存在一个空格。如果您想将一系列空间视为单个空间,则必须

grep ^VALUE filename | tr -s ' ' | cut -d ' ' -f 7

答案 1 :(得分:-1)

awk -在字符串VALUE的行中打印7个字段

awk '/VALUE/{print $7}' filenmae