Есть ли способ избежать ошибок "новой строки в строке" в awk? - PullRequest
0 голосов
/ 27 мая 2018

Как аргументы cmdline, содержащие символы новой строки, передаются в awk?См. Два примера ниже:

awk -v s='text' 'BEGIN { print(s) }'

text

awk -v s=$'\n''text' 'BEGIN { print(s) }'

awk: newline in string 
text... at source line 1

1 Ответ

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

То, что у вас есть, будет работать как есть с gawk.В OSX (BSD) awk, который вы используете, либо не помещайте символ перевода строки в строку.

$ awk -v s='\ntext' 'BEGIN{ print s }'

text

, либо экранируйте его:

awk -v s='\
text' 'BEGIN{ print s }'

text

или (переносимо слюбой awk) не передавайте его, используя -v, а вместо этого:

$ awk 'BEGIN{s=ARGV[1]; ARGV[1]=""; print s }' $'\n''text'

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