awk search for Quoted strings (')


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk search for Quoted strings (')
# 1  
Old 07-08-2007
awk search for Quoted strings (')

Hi All,

I have files:

1. abc.sql

'This is a sample file for testing'
This does not have quotations
this also does not have quotations.
and this 'has quotations'.

here I need to list the hard coded strings 'This is a sample file for testing' and
'has quotations'.

So i have written the shell script as below:

#!/bin/sh
x=$(basename $1)
y=$(dirname $1)
echo "filename: $x"
echo "Dir name: $y"
file_ext=${x##*.}
if [ ! -f $x ]; then
printf "File $x is not a valid file"
exit
fi
if [ $file_ext = sql ] || [ $file_ext = pls ] || [ $file_ext = xml ]; then
printf "This file has extension $file_ext\n";
grep -i "'" $x > hard_coded_strings.txt
fi

Here after the script had been executed, the file "hard_coded_strings.txt" has the text,

'This is a sample file for testing'
and this 'has quotations'.

Now i need to get only the data in the quotation marks, and i have used the awk command and i don't understand how do we compare quotation mark(').

awk command is as below:

awk '{a="/'" ; print index ( $0,a ) > "hardcoded.txt"}' hard_coded_strings.txt

I have used all kinds of possibilitis as,

awk '/"'"||*||"'"/ {a=""'"" ; print index ( $0,a ) > "hardcoded.txt"}' hard_coded_strings.txt

Can any one suggest me how do we get the quoted strings.

Thanks,
Kiran.
# 2  
Old 07-08-2007
search this way for single Quote

'\'' { Read as single quote \ single quote single quote }
# 3  
Old 07-08-2007
Try...
Code:
gawk -v r="'[^']*'" 'match($0,r,a){print a[0]}' $x > hard_coded_strings.txt

# 4  
Old 07-09-2007
Code:
awk -F "'" '{ for (f=1; f<=(NF-1)/2; f++) print $(f*2) }' input_text

Input text:
Code:
'This is a sample file for testing'
This does not have quotations
this also does not have quotations.
and this 'has quotations'.
first 'quotation 1' and second 'quotation 2', no more...
complete 'complete quotation' and 'incomplete

Output:
Code:
This is a sample file for testing
has quotations
quotation 1
quotation 2
complete quotation


Last edited by aigles; 07-09-2007 at 10:53 AM.. Reason: Add support for incomplete quoted string
# 5  
Old 07-09-2007
Hi,

Iam not able to understand the code,

can u plz explain me how does it work

What does f pint to ? field or word.
is the lopping same as c(print getting executed after each and every increment of f ).

Its working, but i need to understand it.
Iam too testing with examples...

Thanks,
Kiran.
# 6  
Old 07-09-2007
Code:
awk -F "'" '{ for (f=1; f<=(NF-1)/2; f++) print $(f*2) }' input_text

-F "'"
Define the quote ' as the Field Separator for Input Records.
for (f=1; f<=(NF-1)/2; f++)
Loop same as in C.
As the field separator is ', the quoted strings are in fields 2, 4, 6, ...
For example, input=first 'quotation 1' and second 'quotation 2', no more...
Field1=first f=1
Field2=quotation 1 f=1, field f*2=2
Field3= and second f=2 =(NF-1)/2
Field4=quotation 2' f=2, field f*2=4
Field5=, no more...
If the number of fields (NF) is even, there is a missing quote.
print $(f*2)
Print the quoted string.


Jean-Pierre.
# 7  
Old 07-10-2007
Hi Jean Pierrie,

Very thanx for ur explanation. This is a great logic.
Please correct me if am wrong anywhere below:

Suppose the string is,

'First Sample' has Quotations 'Comments'

This is totally divided into 5 fields:

field1 = is blank precedding the quotation mark(').
field2 = first Sample
field3 = has Quotations (with spaces on both sides)
field4 = Comments
field5 = is blank after the last quotation.

And if the line is,

First 'Sample has' quotations 'comments'

field1 = First
field2 = Sample has
field3 = quotations (with spaces on both sides)
field4 = comments
field5 = is blank after the last quotation.

always the quotation strings are at even places.

Very thanx for ur logic.

Kiran
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk? extract quoted "" strings from multiple lines.

I am trying to extract multiple strings from snmp-mib files like below. ----- $ cat IF-MIB.mib <snip> linkDown NOTIFICATION-TYPE OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } STATUS current DESCRIPTION "A linkDown trap signifies that the SNMP entity, acting in... (5 Replies)
Discussion started by: genzo
5 Replies

2. Shell Programming and Scripting

awk strings search + print next column after match

Hi, I have a file filled with search strings which have a blank in between and look like this: S. g. Ehr. o. Jg. v. d. Chijs g. Ehr. Now i would like to search for the strings and it also shall return the next column after the match. awk -v FILE="search_strings.txt" 'BEGIN {... (10 Replies)
Discussion started by: sdf
10 Replies

3. Shell Programming and Scripting

awk to search similar strings and add their values

Hi, I have a text file with the following content: monday,20 tuesday,10 wednesday,29 monday,10 friday,12 wednesday,14 monday,15 thursday,34 i want the following output: monday,45 tuesday,10 wednesday,43 friday,12 (3 Replies)
Discussion started by: prashu_g
3 Replies

4. Shell Programming and Scripting

awk search an output string between two strings

I would like to search for strings stored in searchstringfile.txt in inputfiles. searchstringfile.txt J./F. Gls. Wal F. Towerinput1.txt What is needed is J./F. 12 var Gls. Wal 16 interp. Tower 12 input2.txt Awk shall search for F. 16 pt. J./F. 22 output.txt input1.txt J./F. = 12 var... (3 Replies)
Discussion started by: sdf
3 Replies

5. Shell Programming and Scripting

awk search strings from array in textfile

I am wanting to take a list of strings and loop through a list of textfiles to find matches. Preferably with awk and parsing the search strings into an array. // Search_strings.txt tag string dummy stuff things // List of files to search in textfile1.txt textfile2.txt The... (6 Replies)
Discussion started by: sdf
6 Replies

6. Shell Programming and Scripting

awk how to search strings within a file from two different lines

Hi, i would really appreciate any help anyone can give with the following info. Thanks in advance. I need to run a search on a file that contains thousands of trades, each trade is added into the file in blocks of 25 lines. i know the search has to take place between a time stamp specified... (4 Replies)
Discussion started by: sp3arsy
4 Replies

7. Shell Programming and Scripting

Using Awk to Search Two Strings on One Line

If i wanted to search for two strings that are on lines in the log, how do I do it? The following code searches for just one string that is one one line. awk '/^/ {split($2,s,",");a=$1 FS s} /failure agaf@fafa/ {b=a} END{print b}' urfile What if I wanted to search for "failure agaf@fafa"... (3 Replies)
Discussion started by: SkySmart
3 Replies

8. Shell Programming and Scripting

Awk search for a element in the list of strings

Hi, how do I match a particular element in a list and replace it with blank? awk 'sub///' $FILE list="AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA,... (2 Replies)
Discussion started by: grossgermany
2 Replies

9. Shell Programming and Scripting

Varying number of awk search strings

I've created an awk script that handles a varying number of search strings handed to it as command line parameters ($1 $2 etc). There may be 1, or 2 or 3 or more. A simplified version of the script is: awk -v TYP="$1 $2 $3 $4 $5 $6" ' BEGIN { CTYP = split (TYP,TYPP," ") } ... (2 Replies)
Discussion started by: CarlosNC
2 Replies

10. Shell Programming and Scripting

odd behaviour with quoted input strings

I'm working with a java-based monitoring tool (Solaris/x86) which can be configured to call a shell script when a particular event occurs. The java app sends a set of quoted strings as input to the shell script. The problem I'm running into is that the shell script, when called by the java app,... (0 Replies)
Discussion started by: iron_horse
0 Replies
Login or Register to Ask a Question