Привет я работаю со сценарием удара, и у меня есть example.txt ниже. Как я могу расположить в алфавитном порядке следующие 4 информации о ресторанах названием ресторана и распечатать его? Обратите внимание, что формат при алфавитной печати, что это должно остаться тем же как ниже включения города, состояния, адреса, телефона.
Restaurant: McDonalds
City: Miami
State: Florida
Address: 123 Biscayne Blvd
Phone: 91341
Restaurant: Five guys
City: Atlanta
State: Georgia
Address: 123 Peachtree Rd
Phone: 9234211
Restaurant: KFC
City: NYC
State: NY
Address: 123 Madison Square
Phone: 95311
Restaurant: Taco Bell
City: LA
State: CA
Address: 123 Rodeo Drive
Phone: 911
Вот использование решения awk
:
$ awk 'BEGIN{FS="\n";RS=""} {r[$1]=$0} END{n = asort(r); for (i=1;i<=n;i++){print r[i] "\n"}}' restaurants
Restaurant: Five guys
City: Atlanta
State: Georgia
Address: 123 Peachtree Rd
Phone: 9234211
Restaurant: KFC
City: NYC
State: NY
Address: 123 Madison Square
Phone: 95311
Restaurant: McDonalds
City: Miami
State: Florida
Address: 123 Biscayne Blvd
Phone: 91341
Restaurant: Taco Bell
City: LA
State: CA
Address: 123 Rodeo Drive
Phone: 911
awk
чтения в файле одна запись за один раз. Мы определяем разделитель записей, RS
, быть ""
таким образом, это записывает, разделяются пустой строкой. Все записи читаются в массив r
. В конце, массиве r
отсортирован и распечатан.
Поскольку @Sadi указывает в комментариях, awk
команда адаптируема для использования в конвейере:
cat restaurants | awk 'BEGIN{FS="\n";RS=""} {r[$1]=$0} END{n = asort(r); for (i=1;i<=n;i++){print r[i] "\n"}}' >sorted_list_of_restaurants