text processing - How to remove last character from grep output? -


i have text file following content in (for example):

in first line "one", second"two " & " 3 " , also"four    ".  in second line nested "foo "bar" baz""zoo" patterns. 

i tried had strings between pair of quotes , ended command:

grep -po '"\k[^"]+"' file 

what command gave me following:

one" 2 "  3 " 4    " foo "  baz" zoo" 

and what want above result desired output be:

one 2   3  4     foo   baz zoo 

please me remove last " above grep output. don't want remove spaces output. don't have words expanded multiline. e.g:

... "foo "bar" ba z""zoo" ... 

please, please don't suggest me can use multiple commands, know can. i'm ask if can grep , options alone?

this possible through below grep one-liner.

$ grep -op '"\k[^"]+(?="(?:[^"]*"[^"]*")*[^"]*$)' file 1 2   3  4     foo   baz zoo 

another hacky 1 through pcre verb (*skip)(*f),

$ grep -op '[^"]+(?=(?:"[^"]*"[^"]*)*[^"]*$)(*skip)(*f)|[^"]+' file 1 2   3  4     foo   baz zoo 

Comments

Popular posts from this blog

c++ - QTextObjectInterface with Qml TextEdit (QQuickTextEdit) -

javascript - angular ng-required radio button not toggling required off in firefox 33, OK in chrome -

xcode - Swift Playground - Files are not readable -