使用awk后,文件大小大大增加

使用awk后,文件大小大大增加,awk,Awk,我想为一个文件添加行号,然后我这样做 awk '{print $0 "\x03" NR > "/opt/data2/gds_test/test_partly.txt"}' /opt/data2/gds_test/test_partly.txt 我把这一行命令放在一个shell脚本文件中,运行了一段时间,它仍然没有完成,所以我强制结束它,但我发现源文件大小已从1.7G更改为242G 发生了什么事?我有点困惑 我曾经在命令行中使用过一个小文件进行测试,

我想为一个文件添加行号,然后我这样做

awk '{print $0 "\x03" NR > "/opt/data2/gds_test/test_partly.txt"}' /opt/data2/gds_test/test_partly.txt
我把这一行命令放在一个shell脚本文件中,运行了一段时间,它仍然没有完成,所以我强制结束它,但我发现源文件大小已从1.7G更改为242G

发生了什么事?我有点困惑


我曾经在命令行中使用过一个小文件进行测试,这个awk命令看起来还可以,

在文件末尾写入的同时从文件的前面读取。请尝试以下方法:

tmp=$(mktemp)
awk '{print $0 "\x03" NR}' '/opt/data2/gds_test/test_partly.txt' > "$tmp" &&
mv "$tmp" '/opt/data2/gds_test/test_partly.txt'

是的,我更改为将结果重定向到tmp文件,然后删除原始文件并重命名tmp文件,这样就可以了


我还知道可以使用gawk-i inplace,

IMHO您使用相同的输入文件和输出文件,而不使用inplace选项,所以这可能是文件大小的原因。不建议在没有inplace选项的情况下将输出保存到输入文件本身。