15

数行を出力するコマンドがあり、2行目をbash変数に入れたいと思います。

のように、bash変数echo "AAA\nBBB"を入れるbashコマンドが必要です。BBB

4

7 に答える 7

21

sed

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

awk

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

次に、変数をエコーし​​ます。

echo "$var"
于 2012-11-29T11:33:48.700 に答える
6

2回電話readする:

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

必要であることに注意してください{}。両方のコマンドが同じ入力ストリームを取得することを確認してください。また、変数はの外部からアクセスできない{}ため、これは機能しませ

echo -e "AAA\nBBB" | { read line1 ; read line2 ; } ; echo "$line2"
于 2012-11-29T11:32:39.730 に答える
3

あなたが使用することができますsed

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

例えば:

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

印刷したい行に応じて番号を変更します。

于 2012-11-29T11:33:31.010 に答える
1

これを行うには、出力をヘッド/テールに配管します-var=$(cmd | tail -n +2 | head -n 1)

于 2012-11-29T11:32:14.407 に答える
1

サブシェルを回避するには、パラメーター展開付きの配列を使用します。

str="AAA\nBBB"
arr=(${str//\\n/ })
var="${arr[1]}"
echo -e "$str"
于 2012-11-29T12:26:42.803 に答える
0

このような:

var=$(echo -e 'AAA\nBBB' | sed -n 2p)
echo $var
BBB
于 2012-11-29T11:31:59.177 に答える
0

bashスクリプトの場合:Variable =echo "AAA\nBBB" | awk "NR==2"

于 2012-11-29T11:36:59.293 に答える