How can I extract the content between two brackets?
regex, shell, unix
Solution
Still using grep and regex
grep -oP '\(\K[^\)]+' file
`\K` means that use look around regex advanced feature. More precisely, it's a positive look-behind assertion, you can do it like this too :
grep -oP '(?<=\()[^\)]+' file
if you lack the `-P` option, you can do this with perl :
perl -lne '/\(\K[^\)]+/ and print $&' file
Another simpler approach using awk
awk -F'[()]' '{print $2}' file
Problem
My input: ``` 1:FAILED + *1 0 (8328832,AR,UNDECLARED) ``` This is what I expect: ``` 8328832,AR,UNDECLARED ``` I am trying to find a general regular expression that allows to take any content between two brackets out. My attempt is ``` grep -o '\[(.*?)\]' test.txt > output.txt ``` but it doesn't match anything.