1

可能重复:
如何删除文件中以括号开头和结尾的列

如何在文件中的括号之间连接字符串?
预期输入 - input.txt 的内容

ABC EFG    
BCD (AB CD) EFG
DEF BCD AB(ABC)  

预期输出——output.txt 的内容

ABC EFG    
BCD (ABCD) EFG    
DEF BCD AB(ABC)
4

1 回答 1

1

使用括号作为分隔符,您可以这样做awk

awk -F'[)(]' -v OFS="" ' 
  NF == 1
  NF  > 1 {
    for(i=2; i < NF; i+=2) {
      gsub(" +", "", $i)
      $i = "("$i")"
    }
    print
  }'

解释

NF指定字段数。

  • NF == 1表示没有括号。
  • NF > 1表示至少一个带括号的字段。
  • 每个其他字段都是括号字段,因为它们是我们的分隔符。因此,全局替换 ( gsub) 空间,在其他所有字段中都没有。
  • 最后重新插入括号。
于 2012-07-27T22:30:53.887 回答