разделитель полей awk + count в csv и номер строки печати

У нас есть файл csv с более чем 50000 строк. Это только пример

Dcccrev,wefrwvfr,rfregt,wr4f,rfvrv,ecxwec,ecfrv,rfrf Grge,gtgr,frfrv,gthtgv,gerg5tgvrt,rvrfvtg,tgt,frfrf,rfrf Drfrfr,t,tgtg,rf,rgr,grtg,tgt,gtgtg,rg . . . 

Моя задача: в случае чисел разделителя "," В каждой строке не равно 7, тогда нужно напечатать номер строки

Возможно ли создать одну линию awk или один perl-вкладыш для этой задачи?

Без использования эха или кота, которые проводят время

2 Solutions collect form web for “разделитель полей awk + count в csv и номер строки печати”

Это довольно легко с awk. Вы можете установить разделитель, используя -F',' затем подсчитайте столбцы с NF. Для 7 запятых нам понадобится 8 полей и напечатать номер текущей строки с помощью NR.

 awk -F ',' 'NF != 8 {print NR}' test.txt 

Содержание test.txt

 Dcccrev,wefrwvfr,rfregt,wr4f,rfvrv,ecxwec,ecfrv,rfrf Grge,gtgr,frfrv,gthtgv,gerg5tgvrt,rvrfvtg,tgt,frfrf,rfrf Drfrfr,t,tgtg,rf,rgr,grtg,tgt,gtgtg,rg 

Вывод

 2 3 

Оператор Perl s /// (также мог использовать tr /// aka y ///) возвращает количество выполненных подстановок, которое можно использовать для поиска числа «,». Точно так же оператор m // возвращает количество совпадений.

 perl -lne 's/,//g == 7 or print $.' yourfile perl -lne 'print $. if 7 != (() = /,/g)' yourfile sed -ne 's/[^,]//g; /^.\{7\}$/!=' yourfile 
  • Строка конкатената в perl?
  • При знаке после shebang?
  • awk или sed или perl: удалять только символы в определенном месте
  • «Echo» содержимое html для файла в perl
  • perl one liner + как соответствовать IP-адресу, который находится в поле файла first / sec
  • Объединение строк с общими значениями
  • Ошибка при попытке вызова find из perl
  • как предупреждать о пользовательских квотах пользователя ftp в оболочке / sbin / nologin?
  • Регулярное выражение для каждого слова, содержащего & с $ ... $
  • Использует ли «while true», чтобы сценарий оставался хорошей идеей?
  • nginx выходит из строя со следующей ошибкой: nginx: perl_parse () не удалось: 2
  • Linux и Unix - лучшая ОС в мире.