用sed替换换行符分隔的花括号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用sed替换换行符分隔的花括号相关的知识,希望对你有一定的参考价值。
我需要更换它
}, <-here there is a
{
同
}{
没关系 n
我试过这个:
sed "s/},
{/}{/g"
但不起作用。
我尝试过其他奇怪的解决方案,但不能正常工作,因为在文件中有很多其他行以{
开头。
你能建议一些解决方案吗?
答案
sed
解决方案:
示例test.txt
文件:
afa
asdasd
},
{
sdfasd
},
{
sed '/},$/{ N; s/,
{/{/; }' test.txt
输出:
afa
asdasd
}{
sdfasd
}{
另一答案
您可以对-z
使用sed
选项,该选项用空字符而不是换行符分隔行。如果它是一个特别大的文件,您可能希望将它与-u
一起使用。
sed -z "s/},
{/}{/g"
另一答案
sed用于单个行上的简单替换,即全部。你要做的是跨越2行,因此不是sed的工作。只需使用awk,例如:
awk -v RS= '{gsub(/},
{/,"}{")} 1' file
以上所有UNIX系统中所有shell中的所有awk都可以移植(到目前为止你使用的sed解决方案只适用于某些种子,因此不可移植)。
另一答案
这可能适合你(GNU sed):
sed 'N;s/},
s*{/}{/;P;D' file
创建一个包含两行的移动窗口,并在适当时替换换行符分隔的模式。
以上是关于用sed替换换行符分隔的花括号的主要内容,如果未能解决你的问题,请参考以下文章