У меня есть набор данных в сценарий bash. Вот пример того, как выглядят эти данные:
"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,
Я хочу добавить символ разрыва строки (\ n) перед "foo1". Другими словами, измените данные на чтение:
\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,
Я думал, что это можно сделать с помощью sed / awk, но я не уверен, что значения для foo1 могут / измениться.
Любые идеи?
awk
решения:
$ awk '{ sub(/^"foo1"/, "\\n&") }; 1'
$ awk '{ if (/^"foo1"/) { print "\\n" $0 } else { print $0 } }'
Поскольку вы сказали:
Я хочу добавить символ разрыва строки (\ n) перед "foo1"
Поэтому я избежал обратной косой черты, чтобы вставить \n
символ вместо новой строки.
Это добавит '\ n' для каждой строки, начинающейся с "foo":
sed 's/^"foo1":/\n&/'