Sponsored Content
Full Discussion: awk problem with syntax
Top Forums Shell Programming and Scripting awk problem with syntax Post 302869027 by Don Cragun on Tuesday 29th of October 2013 01:26:44 PM
Old 10-29-2013
Yoda's fix will give you a working program that counts the number of lines from line number 101 through line number 199 that contain "lemons" and that contain "dogs" and print them at the end. But, you didn't tell us what this script is supposed to do.

Another way to read what you were trying to do would be print lines 101 through 199 from your input file and at the end print the number of lines in the entire file that contaied "dogs" and the number of lines in the entire file that contained "lemons". If that was your intent, the one character change marked in red below to your original script should work:
Code:
awk -v sw="lemons|dogs" 'NR>100 && NR<200;BEGIN { c=split(sw,a,"[|]"); } { for (w in a) { if ($0 ~ a[w]) d[a[w]]++; } }
END { for (i in a) { o=o (a[i]"="(d[a[i]]?d[a[i]]:0)","); }
  sub(",*$","",o); print o;
}' /home/jahitt/data.txt

Although I prefer more readable code like:
Code:
awk -v sw="lemons|dogs" '
NR>100 && NR<200
BEGIN { c=split(sw,a,"[|]")
}
{       for (w in a) {
                if ($0 ~ a[w])
                        d[a[w]]++
        }
}
END {   for (i in a) {
                o=o (a[i]"="(d[a[i]]?d[a[i]]:0)",")
        }
        sub(",*$","",o)
        print o
}' /home/jahitt/data.txt

If your input file contained:
Code:
lemons and dogs
lemons only
cats and dogs
dogs only
cats only
lemons and cats and dogs

the above scripts produce:
Code:
dogs=4,lemons=3

but the output order is unspecified.

Last edited by Don Cragun; 10-29-2013 at 02:28 PM.. Reason: Fix typo; both scripts produce the same data.
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. Shell Programming and Scripting

Problem with syntax using awk

Hi Guys, When below code is executed in script, I get desired output in output file. awk 'NR >= $start_line && NR <= 3' master_scriptlist.txt > $driver1/scriptlist.txtBut when i replace 3 with a variable end_line=3, I do not get ouput. See code below. Is there any problem with syntax awk... (6 Replies)
Discussion started by: ajincoep
6 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. 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

8. 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

9. 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

10. 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
getcol(1)						      General Commands Manual							 getcol(1)

Name
       getcol - Extract specified columns from an ASCII table file

Synopsis
       getcol [-amv][-n num][-r lines][-s num] filename [column number range]

Description
       Extract specified columns from an ASCII table file

Options
       filename
	      Name  of a ASCII table file.  At least one of these must be present for any values to be printed.  If it is stdin or STDIN, an ASCII
	      table is expected as standard input.  If there is no input file, standard input is assumed.

       @filename
	      Name of a file containing a list of ASCII table files.  If this is present, any other  file  names  on  the  command  line  will	be
	      ignored.

       field range
	      Print  value  of	these  columns for the number of lines of the table specified by the -n argument after the skippiing the number of
	      lines specified by the -s argument.  A value of 0 causes the entire input line to be printed.

       -a     Sum all numeric columns selected, printing the sum on the line following the result.  Columns with  no  sum  are	filled	with  ___.
	      (Added in version 2.6.9)

       -b     Input is bar-separate table file

       -c     Add count of number of lines in each column at end

       -d <number>
	      Number of decimal places in f.p. output

       -e     Compute medians of selected columns

       -f     Print range of values in selected columns

       -h     Print Starbase tab table header

       -i     Input is tab-separate table file

       -k     Print number of columns on first line

       -l <number>
	      Number of lines to add to each line

       -m     Compute the means of all numeric columns selected, printing the mean on the line following the result (or the line following the sum
	      if -a is used).  Columns with no mean are filled with ___.  (Added in version 2.6.9)

       -n num Print selected columns for this many lines.  If not specified, all lines will be read after the number of lines specified by -s have
	      been skipped.

       -o     OR conditions insted of ANDing them

       -p     Print only sum, mmean, sigma, median, or range, not entries

       -r @listfile
	      -r  line	range  Print  columns from the lines specified as either the first nonzero number on each line of the file listfile or the
	      comma- and hyphen- delimitied range; i.e. 1-5,10-12 will print values from lines 1, 2, 3, 4, 5, 10, 11, and 12.  (added  in  version
	      2.6.12)

       -s num Skip this many line before starting to print values.  If not specified, no lines will be skipped.

       -t     Starbase (tab-separated) table output

       -v     Print more information about process.

       Web Page
	      http://tdc-www.harvard.edu/software/wcstools/getcol.html

Author
       Doug Mink, SAO (dmink@cfa.harvard.edu)

8 November 2001 						     WCSTools								 getcol(1)
All times are GMT -4. The time now is 10:59 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy