Скрипт AWK работает, только если я редактирую текстовый файл вручную

С помощью GNU awk вы можете использовать }, { в качестве разделителя записей и вывести записи, не содержащие "data_source_name"::

gawk -v RS='}\\s*,\\s*{' '!/"data_source_name":/'

Или вы можете декодировать его как json, который, похоже, используется, например JSON: :PP:

perl -MJSON::PP -l -0777 -ne '
  $j = JSON::PP->new->relaxed->pretty;
  print $j->encode($_) for grep {!defined($_->{data_source_name})}
                           @{$j->decode("[$_]")}' < file.json
0
04.02.2017, 18:32
1 ответ

Я бы решил эту проблему, удалив символы CR (представленные как ^ M в выводе из cat -et ):

tr -d '\r' < CDPyPuerto.dat |
    awk '{printf "%s%s", $0, (length($1) > 16) ? OFS : ORS}' > TablaCDP.dat
2
29.04.2021, 00:04

Теги

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