Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

awk and special brackets delimiters

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?

like image 427
Šimon Tóth Avatar asked Dec 11 '14 16:12

Šimon Tóth


2 Answers

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
like image 101
fedorqui 'SO stop harming' Avatar answered Nov 17 '22 19:11

fedorqui 'SO stop harming'


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

~$ echo ".......{INFO1}.....[INFO2]...." | awk -F'[][{}]' '{print $2,$4}'
INFO1 INFO2
like image 1
fredtantini Avatar answered Nov 17 '22 18:11

fredtantini