adiciona uma nova linha a um arquivo delimitado

1

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 ..

    
por user29768 30.01.2015 / 22:51

2 respostas

1

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| ).

    
por 30.01.2015 / 22:57
1

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
    
por 30.01.2015 / 23:04