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

发布于 2025-01-11 04:13:10 字数 349 浏览 0 评论 0原文

我有一个巨大的日志文件,我想在其中提取部分日志,如下所示:
----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
----不需要文本--- yValues:10 zValues:1254 ----不需要文本---
....
这是一个巨大的文件,并且 yValues 和 zValues 在整个文件中重复。
打开文件非常慢,因此我尝试仅提取这部分文本。
如果我执行 grep yValues,它仍然给出整行,因此保存的文件仍然是一个大文件。
如何使用 bash 来完成此操作?

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---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED---
----TEXT NOT NEEDED--- yValues:10 zValues:1254 ----TEXT NOT NEEDED---
....
This is a huge file and this yValues and zValues are repeated throughout.
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.
How can this be done using bash?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一刻暧昧 2025-01-18 04:13:10

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

grep has a -o/--only-matching option to do what you want:

$ 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文