【发布时间】: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 infile >> outfile
“infile”的内容是从“outfile”的最后一行添加的。
文件:
foo
bar
输出文件:
superfoo
superbar
cat 命令后:
superfoo
superbar
foo
bar
但我想要:
foo
bar
superfoo
superbar
我该如何更改?
【问题讨论】:
您需要使用临时文件:
cat infile outfile > outfile.tmp && mv outfile.tmp outfile
【讨论】:
您可以使用以下命令:
echo "$(cat infile outfile)" > outfile
在这种情况下,您不需要临时文件。
【讨论】:
cats,而不仅仅是"$(cat infile outfile)"?无论哪种方式,您都依赖于在外部重定向执行open("outfile", O_TRUNC|O_WRONLY)之前执行的命令替换。)
cat 命令。我正在编辑我的答案。谢谢你的评论!
printf '%s\n' "$(cat ...)" 而不是使用echo - 请参阅POSIX echo spec 的应用使用部分中的注意事项。