我正在尝试将第一个命令的输出作为另一个命令的参数。
第一个命令的输出是这样的,3000就是我想要的:
XXXXXXXXXXXXX
abcdefg 1020 10:30
[1000] 3000
我通过./command1 | grep '^\[' | awk 'print $2'
提取模式,因此它将打印出3000,即我想要的值。
我想将3000作为command2 ./command2 3000
的参数。我如何使这项工作?
答案 0 :(得分:2)
command2 $( command1 | awk '/\[/{ print $2 }' )
答案 1 :(得分:0)
您可以使用xargs将输入传递给新命令。在您的示例中,您还需要在awk
参数中包含花括号。
./command1 | grep '^\[' | awk '{ print $2 } ' | xargs ./command2
或者更简洁
.command1 | awk '/^\[/ { print $2 }' | xargs ./command2
示例:
echo "[1000] 3000" | awk '/^\[/ { print $2 }' | xargs echo
输出:
3000
答案 2 :(得分:0)
还有sed
:
./command1 | sed -n 'n;n;p' | awk '{print $2}'
现在一起:
./command2 $(./command1 | sed -n 'n;n;p' | awk '{print $2}') # ./command2 3000
sed
将跳过2行并打印第三行。
答案 3 :(得分:0)
我会亲自尝试反击:
./command2 `./command1 | grep '^\[' | awk 'print $2'`