Bash 如何使用cat将文本文件的内容添加到文件开头

Bash 如何使用cat将文本文件的内容添加到文件开头,bash,cat,Bash,Cat,在bash脚本中,如果执行以下操作: cat infile >> outfile “infle”的内容是从“outfile”的最后一行添加的 填充: foo bar 输出文件: superfoo superbar 在cat命令之后: superfoo superbar foo bar 但我想: foo bar superfoo superbar 如何更改此设置?您需要使用临时文件: cat infile outfile > outfile.tmp &&

在bash脚本中,如果执行以下操作:

cat infile >> outfile
“infle”的内容是从“outfile”的最后一行添加的

填充:

foo
bar
输出文件:

superfoo
superbar
在cat命令之后:

superfoo
superbar
foo
bar
但我想:

foo
bar
superfoo
superbar

如何更改此设置?

您需要使用临时文件:

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

您需要使用临时文件:

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

可以使用以下命令:

echo "$(cat infile outfile)" > outfile

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

您可以使用以下命令:

echo "$(cat infile outfile)" > outfile

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

在RAM中读取任意数量的内容可能是需要明确的。如果我们要处理足够大的文件,这可能是比临时文件方法更糟糕的解决方案。(为什么这两个独立的
cat
s,而不仅仅是
“$(cat infle outfile)”
?不管怎样,您都依赖于在外部重定向打开
之前执行的命令替换(“outfile”,O|TRUNC | O|WRONLY)
)是的,您是对的,对于相当大的文件,这可能不是最好的解决方案,但提问者没有提到这么大的文件。而且你说得对,我们可以将这两个
cat
命令组合在一起。我正在编辑我的答案。谢谢你的评论!我还建议使用
printf'%s\n'$(cat…)
而不是使用
echo
——请参阅的应用程序使用部分中的注意事项。我没有指定文件的大小,但我需要适用于任何场景的解决方案,因此我没有选择您的答案。不过,我非常感谢您的命令。将任意数量的内容读入RAM可能是应该明确的事情。如果我们要处理足够大的文件,这可能是比临时文件方法更糟糕的解决方案。(为什么这两个独立的
cat
s,而不仅仅是
“$(cat infle outfile)”
?不管怎样,您都依赖于在外部重定向打开
之前执行的命令替换(“outfile”,O|TRUNC | O|WRONLY)
)是的,您是对的,对于相当大的文件,这可能不是最好的解决方案,但提问者没有提到这么大的文件。而且你说得对,我们可以将这两个
cat
命令组合在一起。我正在编辑我的答案。谢谢你的评论!我还建议使用
printf'%s\n'$(cat…)
而不是使用
echo
——请参阅的应用程序使用部分中的注意事项。我没有指定文件的大小,但我需要适用于任何场景的解决方案,因此我没有选择您的答案。不过,我非常感谢你的指挥。