如何解决使用命令的输出作为grep参数
我正在尝试将另一个命令的输出用作grep参数(我认为此功能称为this)。但是问题是它不起作用,grep找不到任何条目
wakatana@ubuntu:~$ dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | grep <(uname -mrs | awk '{print $2}')
wakatana@ubuntu:~$
但是当我第一次将其分配给变量时,它就可以工作了:
wakatana@ubuntu:~$ pattern=$(uname -mrs | awk '{print $2}')
wakatana@ubuntu:~$ dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | grep $pattern
8222 linux-image-4.15.0-118-generic
12894 linux-headers-4.15.0-118-generic
64165 linux-modules-4.15.0-118-generic
165817 linux-modules-extra-4.15.0-118-generic
所需命令的输出如下
wakatana@ubuntu:~$ uname -mrs | awk '{print $2}'
4.15.0-118-generic
但是当我回显进程替换的结果时,我得到了:
wakatana@ubuntu:~$ echo <(uname -mrs | awk '{print $2}')
/dev/fd/63
我做错了什么?
操作系统信息:
wakatana@ubuntu:~$ bash --version
GNU bash,version 4.4.20(1)-release (x86_64-pc-linux-gnu)
copyright (C) 2016 Free Software Foundation,Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY,to the extent permitted by law.
wakatana@ubuntu:~$ lsb_release -a
No LSB modules are available.
distributor ID: Ubuntu
Description: Ubuntu 18.04.5 LTS
Release: 18.04
Codename: bionic
wakatana@ubuntu:~$ uname -a
Linux ubuntu 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
解决方法
您不想从与命令输出关联的流中读取数据,而是希望将命令的整个结果作为参数传递给另一个命令。所以你想要:
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | grep "$(uname -mrs | awk '{print $2}')"
我做错了什么?
好吧,我想您错误地期望将进程替换替换为命令输出的 content ,而将其替换为单个与命令输出关联的文件名。要用该命令产生的输出替换命令,请使用命令替换。为了进一步研究,我建议bash manual process substitution,bash manual command substitution。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。