Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Awk consider double quoted string as one token and ignore space in between

Tags:

bash

unix

awk

Data file - data.txt:

ABC "I am ABC" 35 DESC DEF "I am not ABC" 42 DESC 

cat data.txt | awk '{print $2}'

will result the "I" instead of the string being quoted

How to make awk so that it ignore the space within the quote and think that it is one single token?

like image 979
Roy Chan Avatar asked Jul 08 '11 03:07

Roy Chan


1 Answers

Another alternative would be to use the FPAT variable, that defines a regular expression describing the contents of each field.

Save this AWK script as parse.awk:

#!/bin/awk -f  BEGIN {   FPAT = "([^ ]+)|(\"[^\"]+\")" } {   print $2 } 

Make it executable with chmod +x ./parse.awk and parse your data file as ./parse.awk data.txt:

"I am ABC" "I am not ABC" 
like image 115
mabalenk Avatar answered Sep 25 '22 18:09

mabalenk