两个文件:
文件 1
{
foo
}
{
bar
}
文件 2
foo
}
{
bar
}
(唯一不同的是文件 1 以左大括号开头)
下面的表达式对文件 2 有效,但对文件 1 无效,为什么? (以及如何修复?):
sed '1!N; s/}\n{/},\n{/' < file1 or file2
我不知道为什么匹配前 2 行的左大括号会导致此行为。我想知道 sed 被绊倒的原因以及如何修复它。但除了 sed 之外,我也愿意接受在 }\n{
之间插入 ,
的其他方法。
最佳答案
这是你想要的吗(使用 GNU awk 进行多字符 RS):
$ awk -v RS='}\n{' '{ORS=(RT?"},\n{":"")} 1' file1
{
foo
},
{
bar
}
$ awk -v RS='}\n{' '{ORS=(RT?"},\n{":"")} 1' file2
foo
},
{
bar
}
关于regex - 使用 Sed 将输入解析为包含在花括号中的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161423/