0

我正在尝试将第一个命令的部分输出作为另一个命令的参数。

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

XXXXXXXXXXXXX
abcdefg 1020 10:30
[1000]  3000

我通过 提取模式./command1 | grep '^\[' | awk 'print $2',因此它将打印出 3000,即我想要的值。

我想将 3000 作为 command2 的参数./command2 3000。我该如何进行这项工作?

4

4 回答 4

2
command2 $( command1 | awk '/\[/{ print $2 }' )
于 2013-11-12T01:36:27.503 回答
0

我会先亲自尝试反引号:

./command2 `./command1 | grep '^\[' | awk 'print $2'`
于 2013-11-12T01:37:49.870 回答
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 行并打印第三行。

于 2013-11-12T01:32:14.033 回答
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
于 2013-11-12T01:06:49.120 回答