如何将函数的多行输出传递给 grep?

发布于 2024-12-06 12:59:56 字数 317 浏览 7 评论 0原文

我是 UNIX 新手,对可能非常简单的概念感到困惑。我想获取 awk 的输出,该输出旨在返回单列数据(在本例中,它是包含 FC WWN 的几行),并将其用作 grep 中的搜索参数,就像使用文件一样包含该列。

我的第一个想法是简单地输入 grep -f awk {'print $3'} myfile myotherfile

显然,这不起作用。我知道我可以简单地使用两个命令和一个中间文件来完成此操作(将 awk 与 > 输出到一个新文件,并使用 grep -f ),但我想知道是否有办法做到这无需添加文件。

背景:我正在使用 AIX 5.3 和 bash

I'm new to UNIX and having trouble with what is probably a very simple concept. I would like to take the output of an awk designed to return a single column of data (in this case, it's a couple of lines containing FC WWNs) and use that as a search parameter in a grep the same way I would use a file containing the column.

My first thought was to simply type
grep -f awk {'print $3'} myfile myotherfile

Clearly, that didn't work. I know I could do this simply with two commands and an intermediate file (outputting my awk with a > to a new file, and the using the grep -f with it), but I would like to know if there's a way to do this without adding files.

Background: I'm using AIX 5.3 and bash

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

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

发布评论

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

评论(2

软糖 2024-12-13 12:59:56

您可以使用 bash 的漂亮 $< bash 习惯用法将文件名参数替换为指定命令的输出。

fgrep -f <(awk '{print $3}' myfile) myotherfile

You can use the nifty $< bash idiom of bash to replace a file name argument with the output of a specified command.

fgrep -f <(awk '{print $3}' myfile) myotherfile
风铃鹿 2024-12-13 12:59:56

似乎与 GNU grep 一起使用的常见习惯用法(不知道 AIX grep)是使用 - 作为 stdin 的规范。因此,在您的情况下,如果我正确解释了命令,您将使用:

awk {'print $3'} myfile | grep -f - myotherfile

A common idiom that appears to work with GNU grep (don't know about AIX grep) is to use - as a specification for stdin. So in your case, if I've interpreted the commanded correctly, you'd use:

awk {'print $3'} myfile | grep -f - myotherfile

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