How to use if/else if with substr?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use if/else if with substr?
# 1  
Old 04-03-2014
How to use if/else if with substr?

I have a command like this:

Code:
listdb ID923 -l |gawk '{if (substr($0,37,1)==1 && NR == 3)print "YES" else if (substr ($0,37,1)==0 && NR == 3)  print "NO"}'

This syntax doesn't work. But I was able to get this to work:

Code:
listdb ID923 -l |gawk '{if (substr($0,37,1)==1 && NR == 3)print "YES"}'

What is the error I am making?
Any help is appreciated; I am relatively new to awk
# 2  
Old 04-03-2014
It would help if you gave some sample outupt. It helps to break up the awk from a single line and use multi-lines to show the
inner-clauses of if, for example...pretend this was just awk
script the code would look like
Code:
{
if (substr($0,37,1)==1 && NR == 3)
    print "YES" 
 else if (substr ($0,37,1)==0 && NR == 3)  
      print "NO"
}

you also didn't post why "this doesn't work". Provide some sample input and show the results of what you say.
# 3  
Old 04-03-2014
Quote:
Originally Posted by newbie2010
I have a command like this:

Code:
listdb ID923 -l |gawk '{if (substr($0,37,1)==1 && NR == 3)print "YES" else if (substr ($0,37,1)==0 && NR == 3)  print "NO"}'

This syntax doesn't work. But I was able to get this to work:

Code:
listdb ID923 -l |gawk '{if (substr($0,37,1)==1 && NR == 3)print "YES"}'

What is the error I am making?
Any help is appreciated; I am relatively new to awk
Code:
listdb ID923 -l |gawk '{if (substr($0,37,1)==1 && NR == 3)print "YES"; else if (substr ($0,37,1)==0 && NR == 3)  print "NO"}'

Did you miss semicolon ?
# 4  
Old 04-03-2014
Looking at the awk code,
you are missing either a newline or a semicolon or
a { block }:
Code:
gawk '{if (substr($0,37,1)==1 && NR == 3) {print "YES"} else if (substr ($0,37,1)==0 && NR == 3) print "NO"}'

It's probably a good habit to always put the if-action in a { block }:
Code:
gawk '{if (substr($0,37,1)==1 && NR == 3) {print "YES"} else if (substr ($0,37,1)==0 && NR == 3) {print "NO"}}'

This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 04-04-2014
Thanks!

Belated, but I found this out right before your post, MadeInGermany. But thanks for confirming. Sometimes it's hard to see those punctuation marks! Everything works now.

Thanks, All!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Substr

awk '/^>/{id=$0;next}length>=7 { print id, "\n"$0}' Test.txt Can I use substr to achieve the same task? Thanks! (8 Replies)
Discussion started by: Xterra
8 Replies

2. Shell Programming and Scripting

HELP : awk substr

Hi, - In a file test.wmi Col1 | firstName | lastName 4003 | toto_titi_CT- | otot_itit - I want to have only ( colones $7,$13 and $15) with code 4003 and 4002. for colone $13 I want to have the whole name untill _CT- or _GC- 1- I used the command egrep with awk #egrep -i... (2 Replies)
Discussion started by: georg2014
2 Replies

3. Shell Programming and Scripting

awk substr

Hello life savers!! Is there any way to use substr in awk command for returning one part of a string from declared start and stop point? I mean I know we have this: substr(string, start, length) Do we have anything like possible to use in awk ? : substr(string, start, stop) ... (9 Replies)
Discussion started by: @man
9 Replies

4. UNIX for Dummies Questions & Answers

substr

can anybody explain this code? thanks in advance..:) (6 Replies)
Discussion started by: janani_kalyan
6 Replies

5. UNIX for Dummies Questions & Answers

substr of a file

Hi, i'm a newbie and i don't know unix... I'm a dba oracle. I need to cat the content of a file like this: > ps -eaf|grep pmon oracle 221422 1 0 Sep 17 - 7:20 ora_pmon_ORCL oracle 405626 1 0 Sep 17 - 8:39 ora_pmon_ORCL1 oracle 491534 1 0 ... (3 Replies)
Discussion started by: davyp74
3 Replies

6. UNIX for Dummies Questions & Answers

substr of a file

.wysiwyg { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #f5f5ff; PADDING-BOTTOM: 0px; MARGIN: 5px 10px 10px; FONT: 10pt verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif; COLOR: #000000; PADDING-TOP: 0px } .wysiwyg A:link { COLOR: #22229c } .wysiwyg_alink { COLOR:... (1 Reply)
Discussion started by: davyp74
1 Replies

7. Shell Programming and Scripting

substr not working

Hi I am trying to run this command in ksh ...its not working $line="123356572867116w1671716" actual_length = 16 cut_line=`awk 'BEGIN{print substr(ARGV,1,actual_length)}' "$line"` the substr is not giving me an output how can i make it done can anyone hwlp me on this cut_line=`awk... (2 Replies)
Discussion started by: pukars4u
2 Replies

8. Shell Programming and Scripting

get substr?

Hi, I have a long string like, aabab|bcbcbcbbc|defgh|paswd123 dedededede|efef|ghijklmn|paswd234 ghghghghgh|ijijii|klllkkk|paswd345 lmlmlmmm|nononononn|opopopopp|paswd456 This string is devided into one space between substrings. This substrings are, aabab|bcbcbcbbc|defgh|paswd123... (6 Replies)
Discussion started by: syamkp
6 Replies

9. UNIX for Dummies Questions & Answers

Substr

Hi, My input file is 41;2;xxxx;yyyyy.... 41;2;xxxx;yyyyy.... 41;2;xxxx;yyyyy.... .. .. I need to change the second field value from 2 to 1. i.e., 41;1;xxxx;yyyyy.... 41;1;xxxx;yyyyy.... 41;1;xxxx;yyyyy.... .. .. Thanks in advance. (9 Replies)
Discussion started by: deepakwins
9 Replies

10. Shell Programming and Scripting

Using substr

What is the more efficient way to do this (awk only and default FS) ? $ echo "jefe@alm"|awk '{pos = index($0, "@");printf ("USER: %s\n",substr ($0,1,pos-1))}' USER: jefe Thx in advance (2 Replies)
Discussion started by: Klashxx
2 Replies
Login or Register to Ask a Question