如何使用 sed 将行尾的开括号替换为新行?

如何使用 sed 将行尾的开括号替换为新行?

我有许多文件的行尾打开的 { 括号错误,需要按条件将其替换为新行[a-z)] [{]|[a-z)][{].

输入示例:

public class Test {

}

预期输出:

public class Test 
{

}

我的解决方案有什么问题?

sed -e '/[a-z)] [{]|[a-z)][{]/s/{/N{/g' *.java -r 

答案1

由于您是在 Mac 上执行此操作,因此sed可以执行以下操作: sed 's/{$/\'$'\n{/'

例子:

echo "public class Test {

}" | sed 's/{$/\'$'\n{/'
public class Test 
{

}

如果您想“就地”编辑文件,请执行以下命令:

sed -i "" 's/{$/\'$'\n{/' java

结果:

cat java 
public class Test 
{

}

这里是有关在sedMac 上插入换行符的参考。


在 OS X 10.11.6 中测试

答案2

你可以简单地使用这个命令

sed -e s/{/\\n{/g *.java

它将{用 a替换 any\n{并在屏幕上显示输出。要替换文件中的文本,您可以使用就地选项

sed -i s/{/\\n{/g *.java

相关内容