Я хочу захватить все строки, которые содержат точно 3 поля, где поле - любая строка (возможно, пустая), за которой следует |
(и в конце может быть какой-то окончательный текст line).
Мне удалось построить regex
, который, кажется, делает именно то, что я хочу
^(?:[^\|]*\|){3}[^\|]*$
, и когда я пробую его на 101regex , кажется, работает просто отлично.
Однако у меня возникают проблемы с запуском этого regex
в командной строке Windows через grep
, и я думаю, это как-то связано с правильным экранированием.
Я пытался
grep -E '^^(?:[^^^\^|]*^\^|){3}[^^^\^|]*$' test.txt
grep -E '^^(?:[^^^|]*^|){3}[^^^|]*$' test.txt
, но ничего не помогло. Есть идеи?
Тестовый ввод
0|1|2|3
0|1|2|
|1|2|3
|1|2|
|1|2
|1|
0|1|2
0|1|
|1|2|3|4
|1|2|3|
0|1|2|3|4
0|1|2|3|