如何将命令输出的第二行读入bash变量?

时间:2012-11-29 11:28:30

标签: bash

我有一个打印多行的命令,我确实希望将第二行放入bash变量。

echo "AAA\nBBB"类似,我想要一个将BBB置于bash变量中的bash命令。

7 个答案:

答案 0 :(得分:13)

使用sed

var=$(echo -e "AAA\nBBB" | sed -n '2p')

使用awk

var=$(echo -e "AAA\nBBB" | awk 'NR==2')

然后简单地回显你的变量:

echo "$var"

答案 1 :(得分:4)

两次致电read

echo -e "AAA\nBBB" | { read line1 ; read line2 ; echo "$line2" ; }

请注意,您需要{},因此请确保两个命令都获得相同的输入流。此外,变量无法在{}之外访问,因此工作:

echo -e "AAA\nBBB" | { read line1 ; read line2 ; } ; echo "$line2"

答案 2 :(得分:2)

您可以使用sed

SecondLine=$(Your_command |sed -n 2p)

例如:

 echo -e "AAA\nBBBB" | sed -n 2p

您可以根据要打印的行更改数字。

答案 3 :(得分:1)

你可以通过头/尾 - var=$(cmd | tail -n +2 | head -n 1)

来输出输出

答案 4 :(得分:1)

使用带参数扩展的数组来避免子壳:

str="AAA\nBBB"
arr=(${str//\\n/ })
var="${arr[1]}"
echo -e "$str"

答案 5 :(得分:0)

像这样:

var=$(echo -e 'AAA\nBBB' | sed -n 2p)
echo $var
BBB

答案 6 :(得分:0)

在bash脚本中: 变量= echo "AAA\nBBB" | awk "NR==2"