【发布时间】:2015-10-18 06:58:21
【问题描述】:
根据定义,一行必须以换行符结尾 (\n) (ref.)。但是为了这篇文章的目的,我会将任何一系列字符视为一行,无论它是否以\n结尾。
命令tail -n 1 返回最后一行,无论它是否以\n 结尾。如何从文件中获取以\n 结尾的最后一行,无论此行是文件的最后一行还是倒数第二行?
【问题讨论】:
-
一种可能的策略是在换行符处拆分并检查最后一组是否为空(最后一行以新行结尾)或不是(最后一行不以新行结尾)。根据该条件,您可以选择最后一组或上一组。
-
我试过了。问题是
tail不返回终止 \n 无论它是否存在于文件中。所以信息丢失了。 -
你必须依靠tail以外的东西来读取文件。
-
(echo a; echo b; echo -n c) |tail -n1返回“c”;(echo a; echo b; echo c) |tail -n1返回“c\n”。问题出在哪里? -
@Remi.b 事实证明,当您将输出保存到 bash 变量时,如果存在最后一行,则会被修剪。无论如何,任何以
tail -2开头的解决方案都应该有很好的性能(如果可以的话,tail 应该一直到最后)。
标签: regex bash file newline tail