如果我有一个包含多行(文本)的变量,我该如何从中获取最后一行?
我已经想出如何获得第一行:
STRING="This is a
multiple line
variable test"
FIRST_LINE=(${STRING[@]})
echo "$FIRST_LINE"
# output:
"This is a"
可能最后一行应该有一个操作员。或者至少我假设因为@
第一行出来了。
答案 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]}
。