awk and special brackets delimiters

喜欢而已 提交于 2019-12-18 05:12:33

问题


I have data in the following format:

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

For awk it should be really simple to pick up the INFO1 and INFO2 parts, but I'm really struggling with it.

I have managed to get the [INFO2] part by using awk -F'[][]' '{ print $2 }' but the INFO1 just will not match for me.

How do I specify {} as delimiters?


回答1:


Just use [][{}] to define that you can use either of these: [, ], { or } as field separators

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

In general, you say -F"[PATTERNS]".

Test

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



回答2:


You just have to add {} to the field separator:

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



回答3:


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



回答4:


grep -oP '(?<=[{\[]).*?(?=[\]}])'


来源:https://stackoverflow.com/questions/27427142/awk-and-special-brackets-delimiters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!