Problem with syntax using awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with syntax using awk
# 1  
Old 08-18-2010
Problem with syntax using awk

Hi Guys,
When below code is executed in script, I get desired output in output file.

Code:
awk 'NR >= $start_line  && NR <= 3' master_scriptlist.txt > $driver1/scriptlist.txt

But when i replace 3 with a variable end_line=3, I do not get ouput. See code below. Is there any problem with syntax

Code:
awk 'NR >= $start_line  && NR <= $end_line' master_scriptlist.txt > $driver1/scriptlist.txt

# 2  
Old 08-18-2010
You need to quote your variable this way:
Code:
awk 'NR >= '"$start_line"'  && NR <= '"$end_line"'' master_scriptlist.txt > $driver1/scriptlist.txt



---------- Post updated at 08:51 AM ---------- Previous update was at 08:45 AM ----------

Quote:
Originally Posted by ajincoep
Hi Guys,
When below code is executed in script, I get desired output in output file.

Code:
awk 'NR >= $start_line  && NR <= 3' master_scriptlist.txt > $driver1/scriptlist.txt

But I am curious how the code above works...
# 3  
Old 08-18-2010
I prefer

Code:
awk -vstart=$start_line -vend=$end_line 'NR >= start  && NR <= end ' master_scriptlist.txt > $driver1/scriptlist.txt

# 4  
Old 08-18-2010
Quote:
Originally Posted by kevintse
But I am curious how the code above works...
The action to take when the condition is true is omitted and by default implies that $0 is printed. Longer form, which might be more understandable, would be:
Code:
awk '
   NR >= $start_line  &&  NR <= 3 { 
        print;
   }' master_scriptlist.txt > $driver1/scriptlist.txt

@rdcwayx -- I'm with you on that 100%. Stitching together quoted segments to incorporate shell variables will end badly at some point in time.
# 5  
Old 08-18-2010
Quote:
Originally Posted by agama
The action to take when the condition is true is omitted and by default implies that $0 is printed. Longer form, which might be more understandable, would be:
Code:
awk '
   NR >= $start_line  &&  NR <= 3 { 
        print;
   }' master_scriptlist.txt > $driver1/scriptlist.txt

I know that, I am just wondering how the code works while the "$start_line" variable is inserted directly into the awk code, I think this is undefined, and the code does not work here.

Quote:
Originally Posted by agama
@rdcwayx -- I'm with you on that 100%. Stitching together quoted segments to incorporate shell variables will end badly at some point in time.
Yea, it is much better to use -v option, I learned something, thank you.
# 6  
Old 08-18-2010
Quote:
Originally Posted by kevintse
I know that, I am just wondering how the code works while the "$start_line" variable is inserted directly into the awk code, I think this is undefined, and the code does not work here.
Sorry, didn't mean to insult you Smilie

I see what you are saying (in addition to the typo that I cut/pasted into my example). It's possible that awk is interpreting $start_line as 0, which would always be true, but I cannot reproduce it, so I'm not sure.
# 7  
Old 08-19-2010
Thank you for responding.

Could you please answer these questions
1. When do we enclose quotes (" ") within a variable?
2. When do we enclose quotes (` `) within a variable?
3. When do we enclose both the above quotes within a variable?

For eg
Code:
awk 'NR >= '"$start_line"'  && NR <= '"$end_line"'' master_scriptlist.txt > $driver1/scriptlist.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk problem with syntax

awk -v sw="lemons|dogs" 'NR>100 && NR<200 BEGIN { c=split(sw,a,""); } { for (w in a) { if ($0 ~ a) d]++; } } END { for (i in a) { o=o (a"="(d]?d]:0)","); } sub(",*$","",o); print o; }' /home/jahitt/data.txt what am i doing wrong with the above code? im pretty sure the issue is in the... (6 Replies)
Discussion started by: SkySmart
6 Replies

2. Shell Programming and Scripting

awk syntax problem

Hi, I am using this awk command in my shell script : find . -name "*" -ctime -6 | xargs cat | grep -E -v ^fileName\|^\(\) | awk -v DATE="${CURR_DATE}" -v DATE_LOG=$DATE_SYS 'BEGIN {FS=";";OFS=";";CONVFMT="%.9g";OFMT="%.9g"}... (4 Replies)
Discussion started by: abhi1988sri
4 Replies

3. Shell Programming and Scripting

Problem with if-else syntax

I'm calling the following if-else from nawk. But I keep getting an error at the "else". I've tried putting more brackets and ; but still I get complaints about the "else". Any ideas ? Thanks, wbrunc BEGIN { FS = "," ; OFS = "," } { if ( $8 ~ /A/ && $9 == B ) $1="4/29/2013" ; $2="J.Doe"... (2 Replies)
Discussion started by: wbrunc
2 Replies

4. Shell Programming and Scripting

Help with awk syntax error problem asking

Input file: 703 1192 720 1162 316 380 1810 439 1969 874 Desired output file: 3 3 awk code that I tried: (1 Reply)
Discussion started by: perl_beginner
1 Replies

5. Shell Programming and Scripting

Syntax Problem with awk

Hello, I have perl script,which take some part of data in the file. the below command works fine in normal cmd prompt. `awk '/CDI/ && // && !/Result for/ {print $3 $5 > "final.txt"}' datalist.txt`; `nawk -F"" '{print $2}' finalcdi.txt`; But not working. Please use code tags, thanks. (5 Replies)
Discussion started by: rasingraj
5 Replies

6. Shell Programming and Scripting

Problem with awk syntax

Hi, Below is the code I am using. I am trying to list only those numbers which has a + symbol in it cat num | awk -F"+" '{if (/^$/) { } else {if ( $0 ~ egrep "^+$" ) { if ( $0 ~ grep "+" ) {print $0} } }}' I am getting the following error: awk: 0602-521 There is a... (7 Replies)
Discussion started by: sudvishw
7 Replies

7. Programming

Syntax Problem in Query

Hey guys, i am having a problem in my query statement. I am using Mysql in Netbeans and c++. What i am trying to do is for the user to enter a certain value and then the program will store the value into the database... string NewMovie ; Cout <<" Enter your new movie : " << endl ; ... (1 Reply)
Discussion started by: gregarion
1 Replies

8. Shell Programming and Scripting

remote awk syntax problem

Hi there If i run this command on my Linux box directly, i get the desired result # ipmitool fru | gawk '!NF{f=0}/mb.net0.fru/{f=1}/Product Serial/&&f{print $NF}' 00:AA:4F:A6:A6:C4 however, if i try to run it from a remote server (using SSH) and populating a variable with the result,... (5 Replies)
Discussion started by: hcclnoodles
5 Replies

9. Shell Programming and Scripting

syntax problem

Dear friends, I am writing shell script in csh . i want to make arthimatic operation in csh. i wrote sysntax like this. set val = 230 set tmp = `0.1 * $val + 300` echo $tmp but it is not working . anyone please give me syntax. (3 Replies)
Discussion started by: rajan_ka1
3 Replies

10. Shell Programming and Scripting

syntax problem

dear friends, I have a large size file containg two fields data like this *** **** 122 222 ***** ***** ***** ***** 232 233 i have file like this. i want to remove blank lines from file . i think awk is servive this problem i wrote a awk command but the error is... (3 Replies)
Discussion started by: rajan_ka1
3 Replies
Login or Register to Ask a Question