27
27
27
28
28
28
29
29
29
30
30
30
1
1
1
2
2
2
3
3
3
第1列是该月的某一天,我想为该月创建第二列。然而,我的一个月的日子超过两个月。从27到30的数字是09个月,而1到3的数字是10个月。所以awk脚本必须找到第一个月结束的地方,然后将月份相应地调整到下个月
我确实是wak的首发,并试图在awk中学习如何做到这一点。请原谅我,我甚至无法想出错误的方式
提前谢谢你 帕特里克
答案 0 :(得分:0)
这会因使用getline
而受到滥用,但这是一个解决方案
awk 'BEGIN{x=1}{getline y < FILENAME}y==1&&!t{x++;t=1}y==2&&t{t=0}{print y,x}' file
获取一行,在1
上递增计数器,然后在2
上取消设置一个令牌,这样它就不会在每个月的第一个1
中不断递增。
实际上并不需要getline,一开始就采用不同的方式。 这里没有
awk 'BEGIN{x=1}$1==1&&!t{x++;t=1}$1==2&&t{t=0}{print $1,x}' file