Извлечение плохих записей из плоских файлов с помощью awk [closed]

-2
16.11.2018, 03:19
3 ответа

Если под извлечением вы имеете в виду удаление, вы можете использовать awk

$ awk 'NF < 10' my-file.in > my-file.out

Breakdown

NF - это переменная awk, которая показывает, сколько поля, которые есть в текущей обрабатываемой строке.

<10 Если NF меньше 10, строка будет напечатана.

my-file.in Входной файл.

> my-file.out Перенаправить вывод в новый файл.

Если вы хотите узнать больше об awk и его встроенных функциях, я нашел здесь довольно красивую схему встроенных переменных awk .

1
28.01.2020, 05:15

Если ваш вопрос заключается в том, как я могу распечатать строки из файла, которые имеют больше, чем "max" количество столбцов, вот один из способов:

awk -v max=9 'NF > max' your-file-here

передайте любое значение для max (здесь 9), которое вы хотите указать.

1
28.01.2020, 05:15
$ awk 'NF > 10 { print NR }' data.in

Это выведет номера строк (на самом деле номера записей, но поскольку строка - это запись по умолчанию, разницы нет) каждой строки, содержащей более 10 полей. Поле - это строка, по умолчанию разделенная пробелами, если у вас другой разделитель, используйте -F (-F ',' для запятых):

$ awk -F ',' 'NF > 10 { print NR }' data.in

Если вы хотите видеть строку, а не ее номер, это еще проще:

$ awk 'NF > 10' data.in
1
28.01.2020, 05:15

Теги

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