更改 TXT 文件中的日期编号



嗨,这是我第一次拥有一个包含每日数据的 txt 文件

,如下所示:
Station Year Month Day Q Deficit Duration SumDeficit SumDuration
3613100 1975 1 1 2.44 -2.233 1 -2.233 1
3613100 1975 1 2 2.11 -1.903 1 -4.136 2
3613100 1975 1 3 1.8 -1.593 1 -5.729 3
3613100 1975 1 4 1.6 -1.393 1 -7.122 4
3613100 1975 1 5 1.48 -1.273 1 -8.395 5
3613100 1975 1 6 1.72 -1.513 1 -9.908 6
3613100 1975 1 7 5.25 -5.043 1 -14.951 7
3613100 1975 1 8 3.44 -3.233 1 -18.184 8
3613100 1975 1 9 2.33 -2.123 1 -20.307 9
3613100 1975 1 10 1.97 -1.763 1 -22.07 10
3613100 1975 1 11 1.7 -1.493 1 -23.563 11

有没有办法将每个月前 9 天的日期规格从 1 更改为 01、2 更改为 02 ...朝九晚九?而不是让其他日子保持不变/不变?

谢谢!

尝试:

gawk '{ x=sprintf("%02d",$4); sub($4,x,$4); print $0 }' txt-file

我只是顺便发布一个没有awk的解决方案:

paste -d' ' <(<txt-file cut -d' ' -f-3) <(<txt-file cut -d' ' -f4 | xargs -n1 printf "%02dn") <(<txt-filecut -d' ' -f5-)

该命令从文件中提取前 3 列,从文件中提取第 4 列并在每行上调用printf "%02dn",从第 5 列中提取最后列,然后在空间上连接列。

另一个尴尬:

awk '$4~/^.$/{$4="0"$4}1' infile

或与 sed :

sed -E 'h;s/([^ ]* ){3}//;/^. /s//0&/;x;s/(([^ ]* ){3}).*/1/;s/.$//;G;y/n/ /' infile

最新更新