Вы можете использовать
sed 's/\([^|]*|\)\{3\}[^|]* /&\n/' file > newfile
См. онлайн демо
Детали
\([^|]*|\)\{3\}
- три последовательных вхождения
[^|]*
- 0+ символов кроме |
|
- символ трубы
[^|]*
- 0+ символов кроме |
- пробел
Шаблон замены: &\n
, полное совпадение (&
) и символ новой строки (\n
).
Замена выполняется только один раз в строке, так как я удалил опцию g
.
Во избежание переэкрана, вы можете использовать POSIX ERE на основе sed
:
sed -E 's/([^|]*\|){3}[^|]* /&\n/' file > newfile
, где вам не нужно избегать захвата скобок и скобок квантификатора диапазона / интервала (но вы должны избегать буквального |
символа).