Isso adicionará um '\ n' para cada linha que começa com "foo":
sed 's/^"foo1":/\n&/'
Eu tenho um conjunto de dados em um script bash. Veja um exemplo de como esses dados se parecem:
"foo1": "Miscellaneous text",
"foo2": "More text",
"foo3": "blah blah blah",
"foo4": 1635.0,
"foo5": 0.0,
"foo1": "Miscellaneous text that is different",
"foo2": "More text1231231",
"foo3": "blah blah blah234234",
"foo4": 1633425.0,
"foo5": 0.0,
"foo1": "Miscellaneous text abc123",
"foo2": "More text122121",
"foo3": "blah blah blah414124",
"foo4": 163235.0,
"foo5": 1.0,
"foo1": "More Miscellaneous text",
"foo2": "asdfasdfaMore text",
"foo3": "blah blahadsfasdf blah",
"foo4": 1635232.0,
"foo5": 0.0,
Eu quero adicionar um caractere de quebra de linha (\ n) para preceder "foo1". Em outras palavras, altere os dados para ler:
\n"foo1": "Miscellaneous text",
"foo2": "More text",
"foo3": "blah blah blah",
"foo4": 1635.0,
"foo5": 0.0,
\n"foo1": "Miscellaneous text that is different",
"foo2": "More text1231231",
"foo3": "blah blah blah234234",
"foo4": 1633425.0,
"foo5": 0.0,
\n"foo1": "Miscellaneous text abc123",
"foo2": "More text122121",
"foo3": "blah blah blah414124",
"foo4": 163235.0,
"foo5": 1.0,
\n"foo1": "More Miscellaneous text",
"foo2": "asdfasdfaMore text",
"foo3": "blah blahadsfasdf blah",
"foo4": 1635232.0,
"foo5": 0.0,
Eu pensei que seria possível fazer com sed / awk, mas não tenho tanta certeza quanto os valores de foo1 podem mudar.
Alguma ideia?
awk
solutions:
$ awk '{ sub(/^"foo1"/, "\n&") }; 1'
$ awk '{ if (/^"foo1"/) { print "\n" $0 } else { print $0 } }'
Desde que você disse:
I want to add a line break character (\n) to precede "foo1"
Então, escapei da barra invertida para inserir um caractere \n
em vez de uma nova linha.