Linux 将管道的结果用作另一个命令的参数
我试图将第一个命令的部分输出作为另一个命令的参数 第一个命令的输出是这样的,3000是我想要的: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
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也被弃用。谢谢,我自己并不知道。$()
确实需要更多的打字……对于那些想阅读更多内容的人,这里有一个开始: