Учитывая csv-файл, мне нужно пропустить строки с любыми пустыми полями.Количество полей x
фиксированное и известное, но большое.
Использование простого NF == x { commands }
завершается неудачно, так как NF
считается на основе разделителей, и их вхождение надежно и независимо от значения вхождения.
Цикл по всем полям с другой стороны успешно, нокажется довольно медленным подходом:
{
for ( i=1 ; i<=NF ; i++ ) {
if ( $i == "" ) { next }
else if ( i == NF ) { commands }
}
}
Существует ли быстрый и элегантный способ выбора строк без пустых полей?
Примечание:
Iя знаю о решениях sed
или grep
, которые ищут разделители в начале / конце строки и два вспомогательных разделителя - это часть более сложного awk
-скрипта.
Файл примерадолжны быть выбраны строки 1 и 4:
11,12,13,14,15,16
21,22,,24,25,26
31,,33,34,35,36
41,42,43,44,45,46
,52,53,54,55,56
61,62,63,64,65,