这个要点中的文件有两条长行。当我在它上面运行tail -n 1时,返回两行(我希望只有最后一行)。当我在它上面运行-n 1时,只返回第一行(如…
使用十六进制转储工具查看文件后,看起来文件末尾没有新行。有趣的是,gnu coreutils可以处理这个问题,但是bsd coreutils(包含在MacOS中)没有。更多信息可以在中找到 这个stackexchange帖子。
应该对文本文件进行操作的实用程序可能无法很好地应对 文件不以换行符结尾;历史Unix实用程序 例如,可能会忽略最后一个换行符后的文本。 GNU 实用程序的策略是使用非文本文件表现得很好,并且 大多数其他现代工具也是如此,但你可能仍会遇到奇怪的现象 缺少最终换行符的文件的行为。
$ hexdump file-with-2-lines.txt 0000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 * 0001820 61 61 61 61 61 61 61 61 61 61 61 61 0a 62 62 62 0001830 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 * 0003000 62 0003001
编辑文件后(不做任何更改,只需使用在文件末尾强制执行新行的编辑器)。
$ hexdump file-with-2-lines.txt 0000000 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 * 0001820 61 61 61 61 61 61 61 61 61 61 61 61 0a 62 62 62 0001830 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 * 0003000 62 0a 0003002
0a 是换行符。
0a