Using quotes in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using quotes in awk
# 1  
Old 06-24-2016
Using quotes in awk

Hello, i had a problem running a script , and after investigation found its all to do with the quotes:

cat file1

Code:
line1
val1
val2

line2
val1
val2

line3
val1
val2

Code:
 awk 'BEGIN {RS="\n\n"; FS="\n";} {print $1 $2}' file1

This gives me the wrong output:

Code:
line1
val1
val2

line2
val1
val2

line3
val1
val2

Only after experimenting with the quotes did i get what i required:

Code:
awk 'BEGIN {RS='\n\n'; FS="\n";} {print $1 $2}' file1

Code:
line1val1
line2val1
line3val1

Im using AIX/KSH.

All the documentation i have found says use double quotes and in fact when i tried using a single character as a RS it gave give me a syntax error if i used single quotes, so im confused as to why \n is different.Is this specific to ksh or am i doing something wrong?

Many thanks
# 2  
Old 06-24-2016
Code:
awk '{print $1 $2}' RS="\n\n" FS="\n" file1

Code:
awk '{print $1 $2}' RS='\n\n' FS='\n' file1

Code:
awk '{y=getline x; if (x && y) print $1 x}' file1

Code:
awk '!NF {l=l RS; c=0} NF && c++<2 {l=l $0} END {print l}' file1


Last edited by rdrtx1; 06-24-2016 at 01:15 PM..
# 3  
Old 06-24-2016
Code:
awk '{print $1 $2}' RS="\n\n" file1

and

Code:
awk '{print $1 $2}' RS='\n\n' file1

both give wrong output:

Code:
line1
val1
val2

line2
val1
val2

line3
val1
val2

# 4  
Old 06-24-2016
Try using nawk instead of awk on AiX.
# 5  
Old 06-24-2016
i tried nawk this gives the same output.

Is this problem exclusive to AIX?
# 6  
Old 06-24-2016
It is not restricted to AIX. The standards explicitly state that the input Record Separator is the 1st character or the string assigned to RS and the results are unspecified if the string assigned to RS contains more than one character. Some implementations of awk allow using an ERE in RS (which is required by the standards for FS, but not for RS). The behavior you are seeing on AIX is common for most implementations of awk on UNIX and BSD systems. Most, if not all, Linux systems support the extension that allows RS to be set to an ERE.

With a standards-conforming awk:
Code:
awk '
c == 0 {
	f1 = $0
	c = 1
	next
}
c == 1 {
	print f1 $0
	c = 2
}
NF == 0 {
	c = 0
}' file1

should do what you want.

If someone wants to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk or nawk.
This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk -File contain double quotes

Hi ALL, file data like : test.csv a,b,"c,d" my awk version is 4.0.2 ,if i am using the below code is working fine. awk -vFPAT='(*)|("+")' -vOFS="," '{print $3}' test.csv if the awk version is 3.1.7 is not working . Could you please help me on this one. output should be : "c,d" (6 Replies)
Discussion started by: bmk123
6 Replies

2. UNIX for Beginners Questions & Answers

Please explain the use of quotes in awk command in below example-

Example: `abc.ksh | grep '^GLIS'| awk -F' ' '{print \$1}'`; (3 Replies)
Discussion started by: Tanu
3 Replies

3. Shell Programming and Scripting

awk - Print where value is in quotes

Hi All, I have input data like follows: "1234"|"ABC" "1234"|"CBA" "1222"|"ZZZ" I am trying to awk print all records where Col1 = "1234". Below is the code I have so far: Var1=1 Var2=1234 awk -F "|" "$ ${Var1} == "\"${Var2}\"" { print; }' inputfile However when the AWK... (2 Replies)
Discussion started by: RichZR
2 Replies

4. Shell Programming and Scripting

awk problem with quotes

can someone help me with this. i keep getting errors: var1="MaxClients" var2="java|could not.*problem found|panic() failure seen|aborting " awk 'NR>=1&&NR<=10 && /'${var1}'/ && !/'${var2}'/ {++c}c==3{o=$0 RS $0 RS $0; print o; c=0}' log when i run the above, i keep getting: awk:... (3 Replies)
Discussion started by: SkySmart
3 Replies

5. Shell Programming and Scripting

awk without quotes

I want to execute awk command without quotes. who am i | awk {'print $2'} above code should be something like: who am i | awk {print $2} Why such weird requirement? Im assigning command to a variable, hence i need to escape the quotes. e.g: x='who am i | awk {\'print $2\'}' I want... (11 Replies)
Discussion started by: Arun_Linux
11 Replies

6. UNIX for Dummies Questions & Answers

Help populating double quotes using awk

Want to populate double quotes for each filed using awk: Input: cat file.txt => "1-23-test_test1-test2" Required output : "1-23-test_test1-test2"|"#GT_properties_xyz" Was trying the below command on solaris 9 machine : awk -F"|" '{print $1"|""#GT_properties_xyz"}' file.txt ... (8 Replies)
Discussion started by: rajachandhok
8 Replies

7. Shell Programming and Scripting

Using double quotes in awk

Hi I read somewhere that when using double quotes in awk; variables gets expanded else it doesn't. So I tried to use the double quotes inside an awk statement as below: from_instance_trans=`awk "/INPUT =\"$frm_inst\"/,/<\/TRANSFORMATION>/" $xml_object | grep -w "<TRANSFIELD" | awk... (9 Replies)
Discussion started by: dips_ag
9 Replies

8. UNIX for Advanced & Expert Users

awk function in handling quotes

Hi all, I have input lines like below empno,ename,sal,description ---------------------------- 311,"jone,abc",2000,manager 301,david,200,"president,ac" I need to sum the salary of them i.e. 2000+200 anything suggested Thanks, Shahnaz. Use code tags. (5 Replies)
Discussion started by: shahnazurs
5 Replies

9. Shell Programming and Scripting

quotes using awk

i want to print the statement below using awk,but i am unable to get the quotes ("22345",1,"Thank you"); How can i do this (5 Replies)
Discussion started by: tomjones
5 Replies

10. Shell Programming and Scripting

problem with quotes in awk script

i have write this script: #!/usr/bin/gawk -f BEGIN { strins="/usr/bin/mysql --user=user --password=pass -h localhost -D admin_test -e 'INSERT INTO test (id, perc) VALUES ('aaa',0)'" system(strins) } the table test are so defined: id(varchar(10)), perc(int(10)) the error that i... (10 Replies)
Discussion started by: dogo21sob
10 Replies
Login or Register to Ask a Question