我需要编写一个“find”exec 命令来 awk 将格式化结果打印到一些现有的文本文件中。在一些奇怪的情况下,我会在前一行的最后一行上附加行(LF后没有CR?),而不是在新行上。我怎样才能防止这种情况发生?有什么命令可以在附加之前修复文本文件吗? dos2unix?
答案1
使用:
awk 1 file1 file2 ... > outfile
而不是cat file1 file2 ... > outfile
唯一的问题是,与 不同cat
,如果无法打开和读取、等awk
中的任何一个,将立即退出并出现错误,而不是继续处理其余文件。如果这是一个问题,在大多数现代系统上,您可以按照已经建议的方式使用file1
file2
grep ''
这里+-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
希望这可以帮助 :)