Bash从变量中获取最后一行

Mat*_*ash 18 variables bash line

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

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

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

# output:
"This is a"
Run Code Online (Sandbox Code Playgroud)

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

red*_*neb 34

一个简单的方法是使用tail:

echo "$STRING" | tail -n1
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 20

使用bash字符串操作:

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

$> echo "${str##*$'\n'}"
variable test
Run Code Online (Sandbox Code Playgroud)

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

  • 再次,在十秒钟内殴打! (3认同)
  • 哇。我认为@redneb的答案对我来说看起来更容易或更优雅,但这是可行的,并且可能是“正确”的方法。谢谢 (2认同)
  • @MattBackslash:如果您正在寻找一种更便携式的方法,那么这是正确的选择,可能适用于所有外壳变体 (2认同)
  • 这种方法的另一个优点是它不调用任何外部二进制文件,而是通过使用纯BASH构造来完成这项工作。 (2认同)