Acho que isso é o que você quer, supondo que não há problema em usar sed
.
Exemplo
$ echo '8080 "ac ac df asd" 9019 "f v adfs" 1 "123 da 123x"' | sed 's/" \([0-9]\)/"\n/g'
8080 "ac ac df asd"
9019 "f v adfs"
1 "123 da 123x"
A abordagem que você está procurando é reconhecer um padrão e substituí-lo por um caractere de nova linha, \n
. O padrão que estamos reconhecendo com sed
é uma citação seguida por um espaço, seguido por um dígito.
" ...digit...
Nessas situações, queremos colocar um \n
após o espaço "
+. Dado que o espaço agora ocorrerá no final da linha, podemos soltá-lo, daí, "\n
. OBSERVAÇÃO: O
é uma variável na qual salvamos o dígito quando fizemos isso no lado correspondente em s/..match../..replace../g
in sed
, ou seja, \([0-9]\)
. Você pode salvar partes de strings em sed
quando você as envolve com parens com escape, \(..save this..\)
.