问题
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