【问题标题】:how to add content of text file to the beginning of file with cat [duplicate]如何使用cat将文本文件的内容添加到文件的开头[重复]
【发布时间】:2020-03-04 12:02:18
【问题描述】:

在 bash 脚本中,如果我这样做:

cat infile >> outfile

“infile”的内容是从“outfile”的最后一行添加的。

文件:

foo
bar

输出文件:

superfoo
superbar

cat 命令后:

superfoo
superbar
foo
bar

但我想要:

foo
bar
superfoo
superbar

我该如何更改?

【问题讨论】:

    标签: bash cat


    【解决方案1】:

    您需要使用临时文件:

    cat infile outfile > outfile.tmp && mv outfile.tmp outfile
    

    【讨论】:

      【解决方案2】:

      您可以使用以下命令:

      echo "$(cat infile outfile)" > outfile
      

      在这种情况下,您不需要临时文件。

      【讨论】:

      • 将任意数量的内容读入 RAM 可能是应该明确的。如果我们正在处理足够大的文件,这可能是比临时文件方法更糟糕的解决方案。 (以及为什么两个独立的cats,而不仅仅是"$(cat infile outfile)"?无论哪种方式,您都依赖于在外部重定向执行open("outfile", O_TRUNC|O_WRONLY)之前执行的命令替换。)
      • 是的,你是对的,如果文件很大,也许这不是最好的解决方案,但提问者没有提到这么大的文件。而且你是对的,我们可以结合两个cat 命令。我正在编辑我的答案。谢谢你的评论!
      • 我还建议使用printf '%s\n' "$(cat ...)" 而不是使用echo - 请参阅POSIX echo spec 的应用使用部分中的注意事项。
      • 我没有指定文件的大小,但是我需要一个适用于任何场景的解决方案,所以我没有选择你的答案。不过,我非常感谢您的命令。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2018-01-04
      • 2021-12-10
      相关资源
      最近更新 更多