在多个文件中添加缺少的换行符

时间:2011-05-07 17:07:33

标签: bash awk newline text-files

我有一堆不完整的文件:最后一行缺少 EOL 字符。

使用任何工具添加换行的最简单方法是什么(awk可能?)?

3 个答案:

答案 0 :(得分:28)

在文件末尾添加换行符:

echo >>file

在当前目录中每个文件的末尾添加一行:

for x in *; do echo >>"$x"; done

如果您事先不知道每个文件是否以换行符结尾,请先测试最后一个字符。 tail -c 1打印文件的最后一个字符。由于命令替换会截断任何最终换行符,如果文件为空或以换行符结尾,则$(tail -c 1 <file)为空,如果文件以非换行符结尾,则为非空。

for x in *; do if [ -n "$(tail -c 1 <"$x")" ]; then echo >>"$x"; fi; done

答案 1 :(得分:5)

Vim很棒,因为如果你不以binary模式打开文件,它会自动以检测到的行结束文件结束。

所以:

vim file -c 'wq'

应该可以正常工作,无论您的文件是否具有Unix,Windows或Mac行尾样式。

答案 2 :(得分:1)

echo >> filename

在大量使用之前尝试:)