Overwrite input file using awk

2020-02-14 12:11发布

I have the following line of code:

awk -F, '{printf "%09d,%d\n" ,$1,$2}' $newDir/$processNew

and it does what I want it to, but instead of overwriting the current file, it prints out of screen.

What do I need to change to overwrite the current input file which is $processNew ?

Thanks.

2条回答
霸刀☆藐视天下
2楼-- · 2020-02-14 12:38

If you want to override the source file, you need to use a temporary file file:

awk -F, '{printf "%09d,%d\n" ,$1,$2}' $newDir/$processNew > tmp && mv tmp $newDir/$processNew
查看更多
家丑人穷心不美
3楼-- · 2020-02-14 12:52

With GNU awk, you can do

gawk -i inplace -options 'script' file ...

or

gawk -i inplace -v INPLACE_SUFFIX=.bak -options 'script' file ...

ref: https://www.gnu.org/software/gawk/manual/html_node/Extension-Sample-Inplace.html

查看更多
登录 后发表回答