0

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

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了,但它挤压了所有的大括号,而不是特定的单行格式。

谢谢

4

1 回答 1

0

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

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


statement;


if(false)

{
statement1;
statement2;
}
于 2015-06-26T10:27:35.777 回答