Linux - 数字排序然后覆盖文件

moa*_*eep 4 linux sorting awk

我有一个通用格式的csv文件

date,  
2013.04.04,
2013.04.04,
2012.04.02,
2013.02.01,
2013.04.05,
2013.04.02,
Run Code Online (Sandbox Code Playgroud)

我运行的脚本会将数据添加到此文件中,该文件不一定按日期顺序排列.如何将文件排序为日期顺序(忽略标题)并覆盖现有文件而不是写入STDOUT

我用过awk

awk 'NR == 1; NR > 1 {print $0 | "sort -n"}' file > file_sorted
mv file_sorted file
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点,而无需创建额外的文件和移动?

fed*_*qui 9

您可以执行以下操作:

sort -n -o your_file your_file
Run Code Online (Sandbox Code Playgroud)

-o 定义输出文件.

产量

$ cat s
date,  
2013.04.04,
2013.04.04,
2012.04.02,
2013.02.01,
2013.04.05,
2013.04.02,

$ sort -n -o s s

$ cat s
date,  
2012.04.02,
2013.02.01,
2013.04.02,
2013.04.04,
2013.04.04,
2013.04.05,
Run Code Online (Sandbox Code Playgroud)