我有一个打印多行的命令,我确实希望将第二行放入bash变量。
与echo "AAA\nBBB"
类似,我想要一个将BBB
置于bash变量中的bash命令。
答案 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"