Você pode usar sed
:
sed -i 's/|4|/|\n4|/' file.txt
Isso substituirá |4|
por |\n4|
(ou seja, uma barra vertical, uma nova linha e, em seguida, 4|
).
Então eu tenho um nome de arquivo test.txt dentro desse arquivo eu tenho cerca de 20 linhas de texto que são delimitadas por pipe | Exemplo:
John|freshman|seatle|math|4|fulltime
Bob|senior|Tacoma|biology|4|part-time
Eu quero fazer 2 linhas para cada registro após o número 4, exemplo
John|freshman|seatle|math|
4|full-time
Bob|senior|Tacoma|biology|
4|part-time
Etc ..
Se o seu número 4
for colocado sempre no quinto campo, então com awk
você poderá adicionar uma nova linha:
$ awk 'BEGIN{FS=OFS="|"}$5="\n"$5' file
John|freshman|seatle|math|
4|fulltime
Bob|senior|Tacoma|biology|
4|part-time