【发布时间】:2015-01-01 09:54:45
【问题描述】:
我有一个循环生成的临时文件 o2.csv。我想剪切它的第 2 列并将其粘贴到另一个文件 g3temp.csv。
粘贴 g3temp.csv > g3temp.csv
如果写入某个新文件,此命令会生成正确的输出:
粘贴 g3new.csv
为什么写入同一个文件没有给出正确的结果?
【问题讨论】:
我有一个循环生成的临时文件 o2.csv。我想剪切它的第 2 列并将其粘贴到另一个文件 g3temp.csv。
粘贴 g3temp.csv > g3temp.csv
如果写入某个新文件,此命令会生成正确的输出:
粘贴 g3new.csv
为什么写入同一个文件没有给出正确的结果?
【问题讨论】:
这在 shell 中根本不可能。运行命令时,> 会立即截断文件。
最简单的方法是使用临时文件:
paste <(cut -f 2 o2.csv) g3temp.csv > tmp && mv tmp g3temp.csv
使用&& 表达式,我们确保第二个命令将在前一个命令成功完成时执行。
【讨论】: