Linux 将管道的结果用作另一个命令的参数

Linux 将管道的结果用作另一个命令的参数,linux,awk,Linux,Awk,我试图将第一个命令的部分输出作为另一个命令的参数 第一个命令的输出是这样的,3000是我想要的: XXXXXXXXXXXXX abcdefg 1020 10:30 [1000] 3000 我通过/command1 | grep'^\['| awk'print$2'提取模式,因此它将打印出3000个我想要的值 我想将3000作为command2的参数/command2 3000。我如何使其工作?您可以使用将输入传递给新命令。在您的示例中,您还需要在awk参数中包含花括号 ./command1

我试图将第一个命令的部分输出作为另一个命令的参数

第一个命令的输出是这样的,3000是我想要的:

XXXXXXXXXXXXX
abcdefg 1020 10:30
[1000]  3000
我通过
/command1 | grep'^\['| awk'print$2'
提取模式,因此它将打印出3000个我想要的值

我想将3000作为command2的参数
/command2 3000
。我如何使其工作?

您可以使用将输入传递给新命令。在您的示例中,您还需要在
awk
参数中包含花括号

./command1 | grep '^\[' | awk '{ print $2 } ' | xargs ./command2
或者更简洁地说

.command1 | awk '/^\[/ { print $2 }' | xargs ./command2
例如:

echo "[1000]  3000" | awk '/^\[/ { print $2 }' | xargs echo
输出:

3000

还有
sed

./command1 | sed -n 'n;n;p' | awk '{print $2}'
现在大家一起:

./command2 $(./command1 | sed -n 'n;n;p' | awk '{print $2}') # ./command2 3000

sed
将跳过两行并打印第三行。

我个人会先尝试倒勾:

command2 $( command1 | awk '/\[/{ print $2 }' )
./command2 `./command1 | grep '^\[' | awk 'print $2'`

请记住,
awk
还可以执行
grep
的工作,因此您的命令可以简化为:
/command1 | awk'/^\[/{print$2}“
backticks已被弃用,您不需要带awk的grep,而且您已经在awk脚本的条件中而不是操作部分中获得了打印。这是原始管道的快速复制粘贴。我没有正确检查的错误。另外,指出backticks的+1也被弃用。谢谢,我自己并不知道。
$()
确实需要更多的打字……对于那些想阅读更多内容的人,这里有一个开始: