我如何在 awk 或 csh 中按组打印?
How can i print by group in awk or csh?
大家好,我是 awk 和 cshell 的新手,谁能知道如何像那样按组打印输出?
我的输入文件:
A 1
A 2
A 3
AD 4
AD 5
B 6
B 7
B 8
B 9
A 10
AC 11
AC 12
如果在 $1 中有相同的输出,我想按组打印:
#########
#### A
#########
1
2
3
10
#########
#### AD
#########
4
5
#########
#### B
#########
6
7
8
9
#########
#### AC
#########
11
12
我试过这个代码:
set my_sort = `cat input | awk '{print }' |sort |uniq`
foreach name ($my_sort)
echo "##########"
echo "#### $name"
echo "##########"
awk '/^'$name'/ {print [=12=]} input # i want print all line to check
end
但输出不是我想要的:
#########
#### A
#########
A 1
A 2
A 3
AD 4
AD 5
A 10
AC 11
AC 12
#########
#### AC
#########
AC 11
AC 12
#########
#### AD
#########
AD 4
AD 5
#########
#### B
#########
B 6
B 7
B 8
B 9
任何人都知道我的问题在哪里,如果可以使用 awk 我可以优化吗?谢谢大家,祝你有美好的一天
$ sort -k1,1 -k2,2n file |
awk '!=prev{printf "########\n#### %s\n########\n", ; prev=} {print }'
########
#### A
########
1
2
3
10
########
#### AC
########
11
12
########
#### AD
########
4
5
########
#### B
########
6
7
8
9
大家好,我是 awk 和 cshell 的新手,谁能知道如何像那样按组打印输出? 我的输入文件:
A 1
A 2
A 3
AD 4
AD 5
B 6
B 7
B 8
B 9
A 10
AC 11
AC 12
如果在 $1 中有相同的输出,我想按组打印:
#########
#### A
#########
1
2
3
10
#########
#### AD
#########
4
5
#########
#### B
#########
6
7
8
9
#########
#### AC
#########
11
12
我试过这个代码:
set my_sort = `cat input | awk '{print }' |sort |uniq`
foreach name ($my_sort)
echo "##########"
echo "#### $name"
echo "##########"
awk '/^'$name'/ {print [=12=]} input # i want print all line to check
end
但输出不是我想要的:
#########
#### A
#########
A 1
A 2
A 3
AD 4
AD 5
A 10
AC 11
AC 12
#########
#### AC
#########
AC 11
AC 12
#########
#### AD
#########
AD 4
AD 5
#########
#### B
#########
B 6
B 7
B 8
B 9
任何人都知道我的问题在哪里,如果可以使用 awk 我可以优化吗?谢谢大家,祝你有美好的一天
$ sort -k1,1 -k2,2n file |
awk '!=prev{printf "########\n#### %s\n########\n", ; prev=} {print }'
########
#### A
########
1
2
3
10
########
#### AC
########
11
12
########
#### AD
########
4
5
########
#### B
########
6
7
8
9