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:
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)
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)
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)
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)
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)
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)
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)
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)
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
LEARN ABOUT DEBIAN
getcol
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)