Используйте awk, чтобы разделить первую строку файла на основе разделителя и распечатать другие как есть. - PullRequest
0 голосов
/ 10 мая 2018

У меня есть входной файл, который выглядит следующим образом:

name<next>Rocky
id: 1321
age: 36
exp: 10
occupation: doctor

Требуется использовать awk таким образом, чтобы вывод после обработки awk был:

Rocky
id: 1321
age: 36
exp: 10
occupation: doctor

Как видно, разделитель "" не существует в других строках файла, кроме первой.

На данный момент выполняется ниже, печатается только Rocky, за которым следуют пустые строки, поскольку в других строках такого разделителя нет:

awk -F "<next>" '{print $2}' file

Я знаю, что awk обрабатывает построчно, но есть ли способ ограничить awk обработкой или выполнением операции разграничения только в 1 строке. В этом случае мы делаем это на первой линии. Обобщая, можно также создать строки процесса awk, которые соответствуют критериям, таким как разделенные строки с разделителем, и вывести другие строки как есть.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

вы можете напечатать последнее поле, которое будет работать с вашим разделителем, то есть

$ awk -F'<next>' '{print $NF}' file

Rocky
id: 1321
age: 36
exp: 10
occupation: doctor
0 голосов
/ 10 мая 2018

После awk может помочь вам в том же.

awk 'FNR==1{sub(/.*next>/,"")} 1'   Input_file

Объяснение:

FNR==1: проверка состояния здесь, еслиномер строки 1.Если да, то выполните следующее.

{sub(/.*next>/,"")}: используя sub утилиту awk и подставляя здесь все от начала до next> с NULL.

1: awk работает по методу condition, а затем action, поэтому, упомянув 1, я здесь ставлю условие TRUE и не упоминая никаких действий, поэтому по умолчанию будет выполняться печать текущей строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...