[英]awk conditional line numbering
我试图将数字放在文件的每一行之前,但前提是第二列(字段)中的值与前面的值不同
输入文件:
11:10PM *Jane> login
11:15PM *Bob> login
11:16PM *Bob> logout
11:45PM *Betty> login
01:20AM *John> login
输出:
1. 11:10PM *Jane> login
2. 11:15PM *Bob> login
11:16PM *Bob> logout
3. 11:45PM *Betty> login
4. 01:20AM *John> login
利用变量awk具有默认值这一事实:
{
if (last == $2) {
printf(" %s\n", $0)
} else {
n += 1;
last = $2;
printf("%2d. %s\n", n, $0);
}
}
它使用n来记住已看到多少个条目, 最后一次则记住最近一次看到的条目。
$ awk '{print (seen[$2]++ ? " " : sprintf("%2d.",++cnt)), $0}' file
1. 11:10PM *Jane> login
2. 11:15PM *Bob> login
11:16PM *Bob> logout
3. 11:45PM *Betty> login
4. 01:20AM *John> login
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.