Re: problem with spaces in quoted string arguments



On 2007-10-26, Chris F.A. Johnson wrote:
On 2007-10-26, rec.woodworking wrote:
I am passing a list of file records to awk in an attempt to extract
the 2nd field of each record. The records consist of strings seprated
by a space. Some of the strings themselves contain spaces and these
are in double quotes. For example:

10.1.1.2 "testserver" 128.8.183.2
10.1.2.2 "photon hub" 128.8.181.2
10.1.1.7 "voltserver" 128.8.187.4

I simply cat the file into gawk and I was hoping to extract the name
fields:

cat test2 | awk '{print $2}'
"testserver"
"photon
"voltserver"

As can be seen in the output, the server called "photon hub" did not
extract properly, since the space was detected in the argument to awk.
I have looked for an option to ignore spaces within double quotes and
can find none. The easy thing to do is write a quick C program to do
this, but perhaps there is a simple work around that I do not know
about.

awk -F\" '{print $2}' test2

Or:

Instead of

awk '{print $2}' test2 | tr -d '"'

what I mean to write was:

awk '{ gsub( /^[^"]*/, "" )
gsub( /[^"]*$/, "" )
print }' test2 | tr -d '"'


--
Chris F.A. Johnson, author <http://cfaj.freeshell.org/shell/>
Shell Scripting Recipes: A Problem-Solution Approach (2005, Apress)
===== My code in this post, if any, assumes the POSIX locale
===== and is released under the GNU General Public Licence
.



Relevant Pages

  • Re: rename statement in script
    ... >> and mv will look for files with quotes in their names. ... >> It will not work for renaming directories, ... My code in this post is copyright 2003, Chris F.A. Johnson ...
    (comp.os.linux.misc)
  • Re: Question - reading command line parms inside a script.
    ... >> Unless you quote the quotes, ... It strips off the escapes. ... My code in this post is copyright 2004, Chris F.A. Johnson ...
    (comp.unix.questions)
  • Re: wildcards in scripts
    ... > tried quotes, both single & double and it didn't work. ... My code in this post is copyright 2005, Chris F.A. Johnson and may be copied under the terms of the GNU General Public License ...
    (comp.unix.shell)
  • Re: script question
    ... Chris F.A. Johnson wrote: ... > $FILE contains a literal tilde; ... > Remove the quotes: ...
    (comp.unix.shell)
  • Football for Baseball
    ... 193 Chris Simms ... 199 Rudi Johnson ... 225 Mike Peterson ... Marvin Harrison ...
    (rec.collecting.sport.football)