Я пытаюсь написать простой скрипт AWK, который использует пустые строки в качестве разделителя записей. Я воспроизвел на своем ПК пример из руководства GNU AWK Multi-Line Записи. Я копирую код ниже:
# addrs.awk --- simple mailing list program
# Records are separated by blank lines.
# Each line is one field.
BEGIN { RS = "" ; FS = "\n" }
{
print "Name is:", $1
print "Address is:", $2
print "City and State are:", $3
print ""
}
Вход:
Jane Doe
123 Main Street
Anywhere, SE 12345-6789
John Smith
456 Tree-lined Avenue
Smallville, MW 98765-4321
Файлы создаются в системе UNIX.
Требуемый вывод:
Name is: Jane Doe
Address is: 123 Main Street
City and State are: Anywhere, SE 12345-6789
Name is: John Smith
Address is: 456 Tree-lined Avenue
City and State are: Smallville, MW 98765-4321
Вместо этого я получаю результат, который отличается от ожидаемого. Что я получаю:
Name is: Jane Doe
Address is: 123 Main Street
City and State are: Anywhere, SE 12345-6789
Кто-нибудь знает, почему я получаю неправильный результат? AWK находит только 1 запись вместо 2, знаете почему?
dos2unix datafile
. Удачи. - person shellter   schedule 20.01.2016$0
; это скажет вам, что думаетawk
в записи. На какой платформе вы тестируете? Вы используете GNUawk
? - person Jonathan Leffler   schedule 20.01.2016dos2unix
(или аналогичную). - person Etan Reisner   schedule 21.01.2016$0
показывает весь ввод. Как писал в последней строчке AWK находит только 1 запись! Файл создан в UNIX, запуск dos2unix не дает результата! - person mike   schedule 21.01.20166789
иJohn
? - person jas   schedule 21.01.20160a 0a
, что правильно\n\n
- person mike   schedule 21.01.2016awk '{print NR, NF, "<" $0 ">"}' file
в вашем входном файле и отредактируйте свой вопрос, чтобы показать результат. - person Ed Morton   schedule 21.01.2016