awk - поиск номеров из файла - PullRequest
0 голосов
/ 20 декабря 2018

Можете ли вы объяснить мне эту команду, пожалуйста?

awk '/^$/{flag=""} /Input-Output in F Format/{flag=1;next} flag && ($0 ~ /^[0-9]/ || $0 ~ /^ [0-9]+/) && ($0 !~ /[2][89]/ && $0 !~ /[3][01]/){printf("%.06f\n%.06f\n",$5,$6)}'

«Ввод-вывод в формате F» - это строка в файле

Спасибо

1 Ответ

0 голосов
/ 20 декабря 2018

Выведите 5-е и 6-е числовые поля в строках, которые начинаются с цифры или пробела, за которыми следуют несколько цифр, но не содержат ни одного из 28, 29, 30 или 31, и находятся между строкой, содержащей «Ввод-вывод в F».Формат »и пустая строка.

Интересно, как трудно было бы написать переводчик awk2english ....

/ ^ $ / {flag =« "} - когда естьпустая строка, уберите флажок.

/ Ввод-вывод в формате F / {flag = 1; next} - когда длинная строка, установите флаг и пропустите другие правила (далее)

flag && .... - когда установлен флаг, выполните числовые правила.

($ 0 ~ / ^ [0-9] / || $ 0 ~ / ^ [0-9] + /) -- строка начинается с цифры или пробела, за которой следуют несколько цифр

($ 0! ~ / [2] [89] / && $ 0! ~ / [3] [01] /) - строка несодержат 28,29,30 или 31.

В отношении вашего файла в 53800568:

awk '/ ^ [0-9] [0-9] + [\ t] / &&NF == 6 {printf ("% f \ n", $ 5);} '

Сработало для меня.

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