Как я могу печатать по группам в awk или csh?

#awk #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 $1}' |sort |uniq`
foreach name ($my_sort)
       echo "##########"
       echo "#### $name"
       echo "##########"
       awk '/^'$name'/ {print $0} 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 ? Всем спасибо и хорошего дня

Комментарии:

1. Не пишите сценарии с использованием [t]csh, это не то, для чего он был разработан. Посмотрите любые результаты поиска в Google — google.com/search? q=csh почему нет .

Ответ №1:

 $ sort -k1,1 -k2,2n file |
    awk '$1!=prev{printf "########n#### %sn########n", $1; prev=$1} {print $2}'
########
#### A
########
1
2
3
10
########
#### AC
########
11
12
########
#### AD
########
4
5
########
#### B
########
6
7
8
9
 

Комментарии:

1. Большое вам спасибо ! это работает идеально. Но не могли бы вы подробно объяснить мне это, если сможете ? Я хочу знать больше. Еще раз спасибо вам

2. Пожалуйста. Это чрезвычайно простой синтаксис awk, поэтому, пожалуйста, взгляните на справочную страницу, а затем спросите, есть ли у вас какие-либо конкретные вопросы, поскольку не имеет смысла объяснять основы awk в каждом ответе.