我有一个打印多行文本的命令,我想把第二行放进bash变量里。例如
echo "AAA\nBBB"
,我希望有一个bash命令可以将BBB
放入一个bash变量中。echo "AAA\nBBB"
,我希望有一个bash命令可以将BBB
放入一个bash变量中。使用sed
:
var=$(echo -e "AAA\nBBB" | sed -n '2p')
使用 awk
:
var=$(echo -e "AAA\nBBB" | awk 'NR==2')
然后,简单地回显您的变量:
echo "$var"
调用read
两次:
echo -e "AAA\nBBB" | { read line1 ; read line2 ; echo "$line2" ; }
{}
来确保两个命令获得相同的输入流。 另外,变量在{}
之外是无法访问的,因此以下做法无法奏效:echo -e "AAA\nBBB" | { read line1 ; read line2 ; } ; echo "$line2"
sed
命令:SecondLine=$(Your_command |sed -n 2p)
例如:
echo -e "AAA\nBBBB" | sed -n 2p
根据您想要打印的行数更改数字。
str="AAA\nBBB"
arr=(${str//\\n/ })
var="${arr[1]}"
echo -e "$str"
您可以通过使用 head/tail 命令来实现此操作 -- var=$(cmd | tail -n +2 | head -n 1)
像这样:
var=$(echo -e 'AAA\nBBB' | sed -n 2p)
echo $var
BBB
echo "AAA\nBBB" | awk "NR==2"
{ read line1; read line2; } < <(command)
或Here-Stringsoutput=$(command); { read line1; read line2; } <<< "$output"
。 - glenn jackmansed
或awk
或tail
/head
组合)。 - gniourf_gniourf