I'm trying to find all patterns between a pair of double quotes. Let say I have a file with contents look like as following:
first matched is "One". the second is here"Two " and here are in second line" Three ""Four".
I want to below words as output:
One Two Three Four
As you can see all strings in output are between a pair of quotes.
What I tried, is this command:
grep -Po ' "\K[^"]*' file
Above command works fine if I have a space before first pair of
" marks. For example it works if my input file contains the following:
first matched is "One". the second is here "Two " and here are in second line " Three " "Four".
I know I can do this with multiple commands combination. But I'm looking for one command and without using that for multiple time. e.g: below command
grep -oP '"[^"]*"' file | grep -oP '[^"]*'
How can I achieve/print all of my patterns just using one command?
Reply to comments: It's not important for me to removing whitespace around matched pattern inside a pair of quotes, but it would be better if the command support it too. and also my files contain nested quotes like
"foo "bar" zoo". And all of the quoted words are in separate lines and they are not expanded to multi lines.
Thanks in advance.