我们有以下两个文件:
t1.txt
1
2
3
t2.txt
a
s
d
我可以使用:
paste -d"," t1.txt t2.txt > result.txt
并输出result.txt
1,a
2,s
3,d
这是完美的,但是我想在下面做:
paste -d"," t1.txt t2.txt > t1.txt
并且我期望t1.txt与result.txt相同,但是如下所示,而不是我所需要的:
,a
,s
,d
我可以将result.txt重命名为t1.txt,但是想知道是否有更好的方法吗?
注意:
paste
是任何东西,只要我们避免创建诸如result.txt之类的临时文件即可。该sponge
实用程序仅用于以下任务:
paste -d, t1.txt t2.txt | sponge t1.txt
sponge
是moreutils
包装的一部分。在类似debian / ubuntu的系统上,运行apt-get install moreutils
。
fname=$(mktemp) && paste -d, t1.txt t2.txt >>"$fname" && mv "$fname" t1.txt
如果某人无权访问mktemp
或sponge
,则可以使用:
paste -d, t1.txt t2.txt > ~/result$$.txt && mv ~/result$$.txt t1.txt
您可以选择将临时文件放置在何处。在上面,我们将其放置在用户的主目录中~/
,因为这样可以避免将文件放置在目录中而引起的安全问题/tmp
。
$$
是进程ID。至少在整个过程的生命周期中,这是唯一的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句