разделитель полей 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, имеющем копию оригинала, который должен одновременно сравнивать как в разделенном gvim-редакторе
  • сохранить форматирование вывода perldoc
  • извлечь столбец из большого текстового файла
  • Что со всеми переименованиями: prename, rename, file-rename?
  • extract включить в файл C
  • Выполнить команду Nohup с помощью ввода
  • Пропустить текст в выводе с помощью grep в режиме Perl
  • Использует ли «while true», чтобы сценарий оставался хорошей идеей?
  • Ошибка Perl "Не удается найти Thread / Pool / Simple.pm в @INC"
  • Установка CPAN не выполняется в репозитории Arch
  • Чтобы сопоставить только самую внутреннюю среду с помощью Regex
  • Linux и Unix - лучшая ОС в мире.