Bash从变量中获取最后一行

时间:2016-09-21 11:21:06

标签: bash variables line

如果我有一个包含多行(文本)的变量,我该如何从中获取最后一行?

我已经想出如何获得第一行:

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

# output:
"This is a"

可能最后一行应该有一个操作员。或者至少我假设因为@第一行出来了。

3 个答案:

答案 0 :(得分:30)

一种简单的方法是使用tail

echo "$STRING" | tail -n1

答案 1 :(得分:17)

使用bash字符串操作:

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

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

${str##*$'\n'}将从字符串的开头删除最长匹配,直到\n,从而只留下输入中的最后一行。

答案 2 :(得分:2)

如果你想要一个数组,每行STRING有一个元素,请使用

readarray -t lines <<< "$STRING"

然后,第一行是${lines[0]},最后一行是${lines[-1]}。在bash的旧版本中,不允许使用否定索引,并且您必须手动计算最后一个索引:${lines[${#lines[@]}-1]}