linux - 从代码中删除多余的大括号

标签 linux tr text-manipulation

我正在尝试使用tr命令或任何类似的命令来对此 block 执行特定的文本操作:

if (/*condition*/)
{
    statement1;
}
int a=3;
if (a)
{
    statement1;
    statement2;
}
else
{
    statement1;
    statement2;
    statement3;
    statement4;
    ///may be more lines
}

我想删除单行命令并得到这个:

if (/*condition*/)
    statement1;
int a=3;
if (a)
{
    statement1;
    statement2;
}
else
{
    statement1;
    statement2;
    statement3;
    statement4;
    ///may be more lines
}

我已经尝试过tr -s '{}' ' ' <file.txt但它会挤压所有大括号,而不是使用特定的单行格式。

谢谢

最佳答案

您可以将记录分隔符设置为 {} 并检查您有多少个字段。如果有多个,请在周围打印括号:

$ awk -v RS=[{}] 'NF>1{$0="{"$0"}"}1' file
if(true)


statement;


if(false)

{
statement1;
statement2;
}

关于linux - 从代码中删除多余的大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070714/

相关文章:

linux - 使用 Subversion 时如何正确处理符号链接(symbolic link)文件夹?

linux - 如何检查文件大小是否没有增加,如果没有则杀死脚本的$$

bash - 用\n+numbers+\n替换所有数字

string - 将 Percent-Encoded URI 字符串中的汉字转换为 UTF-8 中的汉字?

linux - 为什么我无法登录 Debian VM 上的代码服务器?

linux - 运行 cron 产生的结果与运行它的命令不同

java - Java 中的文本操作

mysql - 包含 "The "的字符串的文本操作

linux - 创建文件所需的 awk sed 帮助

linux - 使用 grep/sed/perl 在一行中提取多个项目