Поскольку вы не предоставили образец текста, мне пришлось принять некоторые догадки о том, что вам нужно.
Вот образец текста я использую:
06:33:20 0 1 [email protected]:/tmp$ cat sample.csv
first,last,address,otherstuff
first,,address,otherstuff
first,last,,
Простой grep ,,
не работает, поскольку она также находит последнюю строку:
06:33:22 0 0 [email protected]:/tmp$ grep ,, sample.csv
first,,address,otherstuff
first,last,,
Поскольку первое поле имя первым на линии, мы можем немного упростить проблему: мы хотим найти места, где первая запятая на линии сразу же следует за второй запятой.
06:35:07 0 0 [email protected]:/tmp$ grep "^[^,]*,," sample.csv
first,,address,otherstuff
В этом регулярном выражении, первые ^
якоря регулярного выражения к началу строки; [^,]*
соответствует 0 или более вхождений любого символа, кроме запятой (да, ^
делает что-то совсем другое в этом контексте), и, наконец, ,,
соответствует двум запятым.
Если вы хотите, чтобы 3-е поле было пустым, вам нужно будет немного повториться.
06:35:28 0 0 [email protected]:/tmp$ grep "^[^,]*,[^,]*,," sample.csv
first,last,,
Здесь вы ищете 0 или более символов без запятой, а затем через запятую, а затем 0 или более не запятые, а затем двумя запятыми.
Как разделяются имена? –
Показать образцы строк из входного файла. – anubhava
текст с разделителями табуляции или CSV или файл базы данных, это может быть любой файл, который мы использовали в процессе ETL. – Dangod