如果我的文件格式如下:
a,city1
b,city1
.
.
z,city1
1,city2
2,city2
3,city2
.
.
10,city2
使用awk,我是否只能打印3
条记录为city1
和2
的记录city2
a,city1
b,city1
c,city1
1,city2
2,city2
或者我可以在没有awk
的情况下执行此操作吗?
答案 0 :(得分:0)
$ awk -F, 'BEGIN{n["city1"]=3; n["city2"]=2} ($2 in n) && (c[$2]++<n[$2])' file
a,city1
b,city1
z,city1
1,city2
2,city2
我假设您在实际输入中有第二个字段值而不是city1和city2,否则解决方案更简单:
$ awk -F, 'BEGIN{n["city1"]=3; n["city2"]=2} c[$2]++<n[$2]' file
a,city1
b,city1
z,city1
1,city2
2,city2
答案 1 :(得分:0)
使用grep
$ cat ip.txt
a,city1
b,city1
c,city1
d,city1
z,city1
1,city2
2,city2
3,city2
4,city2
10,city2
$ grep -m 3 'city1' ip.txt ; grep -m 2 'city2' ip.txt
a,city1
b,city1
c,city1
1,city2
2,city2
答案 2 :(得分:0)
hacky方式演示awk
$ awk -F, '/city[12]$/ && a[$2]++<4-substr($2,length($2),1)' file
a,city1
b,city1
c,city1
1,city2
2,city2