awk和特殊的括号分隔符

我有以下格式的数据:

.......{INFO1}.....[INFO2].... 

对于awk来说,拿起INFO1INFO2部分应该是非常简单的,但是我真的很INFO1

我设法通过使用awk -F'[][]' '{ print $2 }'来获得[INFO2]部分,但是INFO1只是不匹配我。

我如何指定{}作为分隔符

只需使用[][{}]来定义您可以使用以下任一项: []{}作为字段分隔符

 awk -F"[][{}]" '{print ...}' file 

一般来说,你说-F"[PATTERNS]"

测试

 $ echo ".......{INFO1}.....[INFO2]...." | awk -F"[][{}]" '{print $2}' INFO1 $ echo ".......{INFO1}.....[INFO2]...." | awk -F"[][{}]" '{print $4}' INFO2 

您只需将{}添加到字段分隔符:

 ~$ echo ".......{INFO1}.....[INFO2]...." | awk -F'[][{}]' '{print $2,$4}' INFO1 INFO2 
  $ echo '.......{INFO1}.....[INFO2]....' | awk -F'[][{}]' '{print $2}' INFO1 
 grep -oP '(?<=[{\[]).*?(?=[\]}])'