如何在进入bash脚本的一组值之前添加换行符?

我有一套数据pipe道到一个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的值可以/将会改变。

有任何想法吗?

这将为以“foo”开头的每一行添加一个“\ n”:

 sed 's/^"foo1":/\n&/' 

awk解决scheme:

 $ awk '{ sub(/^"foo1"/, "\\n&") }; 1' $ awk '{ if (/^"foo1"/) { print "\\n" $0 } else { print $0 } }' 

既然你说过:

我想添加换行符(\ n)在“foo1”之前

所以我逃过反斜杠插入一个\n字符,而不是一个新的行。