如何修复没有换行符或EOF的Linux文本文件?

如何修复没有换行符或EOF的Linux文本文件?

我需要编写一个“find”exec 命令来 awk 将格式化结果打印到一些现有的文本文件中。在一些奇怪的情况下,我会在前一行的最后一行上附加行(LF后没有CR?),而不是在新行上。我怎样才能防止这种情况发生?有什么命令可以在附加之前修复文本文件吗? dos2unix?

答案1

使用:

awk 1 file1 file2 ... > outfile

而不是cat file1 file2 ... > outfile 唯一的问题是,与 不同cat,如果无法打开和读取、等awk中的任何一个,将立即退出并出现错误,而不是继续处理其余文件。如果这是一个问题,在大多数现代系统上,您可以按照已经建议的方式使用file1file2grep ''这里+-h省略文件名的选项(但要注意,这是利用 的非标准功能grep):

grep -h '' file1 file2 ... > outfile

答案2

有一个有趣的hack地方,你可以用 awk 格式化 bash 命令并将其推送到 bash,如下所示:

awk '{ print "find " $1 " -exec ls {} \;" }' ./source_file | bash

这将使您立即执行命令,例如:

find /var -exec ls {} \;
find /home/user1 -exec ls {} \;
# and so on depending on the contents of the ./source_file

希望这可以帮助 :)

相关内容