我需要替换这个
}, <-here there is a \n
{
带
}{
关于\ n
并不重要我试过这个:
sed "s/},\n{/}{/g"
但不起作用。
我尝试过其他奇怪的解决方案,但效果不佳,因为在文件中还有很多以{
开头的行。
你能建议一些解决方案吗?
答案 0 :(得分:3)
sed
解决方案:
示例test.txt
文件:
afa
asdasd
},
{
sdfasd
},
{
sed '/},$/{ N; s/,\n{/{/; }' test.txt
输出:
afa
asdasd
}{
sdfasd
}{
答案 1 :(得分:2)
您可以对-z
使用sed
选项,该选项将行除以空字符而不是换行符。如果它是一个特别大的文件,您可能希望将其与-u
一起使用。
sed -z "s/},\n{/}{/g"
答案 2 :(得分:2)
sed用于单个行上的简单替换,即全部。你要做的是跨越2行,因此不是sed的工作。只需使用awk,例如:
awk -v RS= '{gsub(/},\n{/,"}{")} 1' file
上面的内容将适用于所有UNIX系统上所有shell中的所有awks(到目前为止,你所拥有的sed解决方案只适用于某些seds,因此不可移植)。
答案 3 :(得分:1)
这可能适合你(GNU sed):
sed 'N;s/},\n\s*{/}{/;P;D' file
创建一个包含两行的移动窗口,并在适当时替换换行符。