I need to compare 1st column of user.csv with value, it works well with following
value=2
awk -F':' '$1==$value {print}' user.csv
now I have a case where column number is also a variable for me, in that case, the solution would be:
value=2
column=1
awk -F':' ''\$$column==$value' {print}' filename
1. You need to put backslash (\) before first $
2. You need to put comparison in single quote
Wednesday, December 22, 2010
use variable refeences in awk
Posted by
Vishnu Agrawal
at
5:56 PM
0
comments
Labels: awk
Wednesday, October 22, 2008
Group rows of a csv file with sum of column values
You have heard about Group functionality in Microsoft Excel, which group the rows on a common value and does the sum of other field. Same thing can be done in unix using awk very easily. See below example:
[ ~]# cat test.csv
a,5
b,10
a,4
c,8
b,9
b,4
[ ~]# awk -F"," '{sum[$1] += $2 } END { for(n in sum)print n"=" sum[n] }' test.csv
a=9
b=23
c=8
Perl version of above script can be seen here:
Posted by
Vishnu Agrawal
at
10:33 AM
0
comments
Labels: awk, perl script
Thursday, October 16, 2008
AWK examples
Find number of columns in a pipe seperated csv file
awk -F"|" '{print NF}' vishnu.csv |uniq
Find sum of column of a pipe seperated csv file
awk -F"|" '{sum += $col } END { print sum }' vishnu.csv
awk -F"|" '{sum += $col } END { print sprintf("%.2f",sum) }' vishnu.csv (print float value)
Replace tab character with a pipe symbol in a csv file
awk '{gsub("\t","|");print}' vishnu.csv
print the 5th and 7th columns of csv file if 5th and 7th column values are not same
awk -F"," '{if($5 != $7) {print $5","$7}}' test.csv
print the line of csv file if 5th and 7th column values are same
awk -F"," '{if($5 !== $7) {print}}' test.csv
Posted by
Vishnu Agrawal
at
7:39 PM
0
comments
Labels: awk