如何将函数的多行输出传递给 grep?
我是 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 bash 的漂亮
$<
bash 习惯用法将文件名参数替换为指定命令的输出。You can use the nifty
$<
bash idiom of bash to replace a file name argument with the output of a specified command.似乎与 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