连接文件中括号之间的字符串

时间:2012-07-27 21:23:10

标签: shell

  

可能重复:
  how can i delete columns beginning and ending with parenthesis in a file

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

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

期望输出 - output.txt的内容

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

1 个答案:

答案 0 :(得分: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)空间,其他所有领域都没有。
  • 最后重新插入括号。