• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 177
  • Last Modified:

Escape single quotes

I have a shell script (below) that scans through directories and reads in files with a .arf extension (sample below), and then adds the contents of the file to a main SQL file to insert into a database.  This works perfectly, except I now need to escape any single quotes found.

Shell Script:
#!/bin/sh

echo `date`
find . -name "*.arf" | while read f; do
  newpath="$(basename $(dirname "$f"))"
#/$(basename $f)"
  cat "$f" | gawk -F'[:"]' -v p="$newpath" '{ 
      nlist=nlist "`, `" $1;
      vlist=vlist ", '\''" $3 "'\''";
  }
  END { 
    printf "insert into `database`.`archives` (`NEWPATH%s`) values ('\''%s'\''%s);\n", nlist, p, vlist;
  }' >> myinsertfile.sql
#| tee -a myinsertfile.sql
  cnt=$((cnt+1))
  [ $(($cnt%100)) -eq 0 ] && echo "File #$cnt: $f"
done

echo "Total Files: $cnt"

echo `date`

Open in new window


Sample problem .arf file:
FILEID: "TIF521496"
PATH: "/optical/incoming/TIF521496"
TYPE: "TIF"
SECLEV: "10"
STATID: ""
USRID: "admin"
REQDATE: "12/31/2012"
REQTIME: "08:28:17"
GENDATE: "01/02/2013"
GENTIME: "08:28:17"
PROGID: ""
GROUPID: "Drive up rec's"
DESC: "December"

Open in new window

0
bdhtechnology
Asked:
bdhtechnology
1 Solution
 
woolmilkporcCommented:
Escape the single quote with a backslash? Try this:
cat "$f" | gawk -F'[:"]' -v p="$newpath" '{ 
      nlist=nlist "`, `" $1;
      gsub("'\''","'\\\\\''",$3);
      vlist=vlist ", '\''" $3 "'\''";
  }
  END { 
    printf "insert into `database`.`archives` (`NEWPATH%s`) values ('\''%s'\''%s);\n", nlist, p, vlist;
  }' >> myinsertfile.sql

Open in new window

Note line 3!
0
 
bdhtechnologyAuthor Commented:
Perfect, that is exactly what I needed!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now