web-dev-qa-db-ja.com

Bashは変数から最後の行を取得します

複数の行(テキスト)を持つ変数がある場合、最後の行を取得するにはどうすればよいですか?

私はすでに最初の行を取得する方法を見つけました:

STRING="This is a
multiple line
variable test"
FIRST_LINE=(${STRING[@]})
echo "$FIRST_LINE"

# output:
"This is a"

おそらく最後の行に演算子があるはずです。または、少なくとも、@最初の行が出てきます。

17
Matt Backslash

Bash文字列操作の使用:

$> str="This is a
multiple line
variable test"

$> echo "${str##*$'\n'}"
variable test

${str##*$'\n'}は、文字列の先頭から\nまでの最長一致を削除し、入力の最後の行のみを残します。

18
anubhava

これを行う簡単な方法は、tailを使用することです。

echo "$STRING" | tail -n1
31
redneb

STRINGから1行に1つの要素を持つ配列が必要な場合は、使用します

readarray -t lines <<< "$STRING"

その場合、最初の行は${lines[0]}、最後の行は${lines[-1]}bashの古いバージョンでは、負のインデックスは許可されず、最後のインデックスを手動で計算する必要があります:${lines[${#lines[@]}-1]}

2
chepner