简体   繁体   English

在大文件上使用 bash 提取部分文本

[英]Extract part of text using bash on a large file

I have huge log file where I want to extract part of the log which looks like this:我有一个巨大的日志文件,我想在其中提取部分日志,如下所示:
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED--- ----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED--- ----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED--- ----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
.... ....
This is a huge file and this yValues and zValues are repeated throughout.这是一个巨大的文件,并且这个 yValues 和 zValues 在整个过程中都是重复的。
Opening the file is very slow, so I am trying to extract this part of the text only.打开文件很慢,所以我试图只提取这部分文本。
If I do grep yValues, it still gives the whole line and so file saved is still a large file.如果我执行 grep yValues,它仍然给出整行,因此保存的文件仍然是一个大文件。
How can this be done using bash?如何使用 bash 完成此操作?

grep has a -o / --only-matching option to do what you want: grep有一个-o / --only-matching选项来做你想做的事:

$ grep --only-matching 'yValues:[0-9]\+' <<EOF
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED---
EOF
yValues:10
yValues:10
yValues:10

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM