Как я могу расположить в алфавитном порядке много запись строки от текстового файла?

Привет я работаю со сценарием удара, и у меня есть 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
1
задан 27 March 2014 в 09:33

1 ответ

Вот использование решения 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
5
ответ дан 3 December 2019 в 06:43

Другие вопросы по тегам:

Похожие вопросы: