Test argument error, unable to solve


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Test argument error, unable to solve
# 1  
Old 08-23-2010
Error Test argument error, unable to solve

Here is an awk statement i am using to sum a series of numbers..
Code:
awk  -F"," '{ for (i=1; i<=NF ; ++i) sum[i] += $i;} #  if (i > max) max=i }
END { s=""; for (i=1; i<=max; ++i) { printf "%s%s", s, sum[i]; s=","; } printf "\n" }' filename.csv

It works fine for the summing part. But since my series contains several N/A's also along with the numbers i am getting an test argument expected error...

Is there any way of getting past this without actually removing the N/A from the inputs..?

eg input -
Code:
23, 89, N/A, 75, 89.....

Moderator's Comments:
Mod Comment Use code tags, ty.
# 2  
Old 08-23-2010
You could check if the field is not a number or if it is the string N/A and then decide if you sum it up or skip it, about here:
Code:
awk  -F"," '{ for(i=1; i<=NF ; ++i) { if (i !~ /N\/A/) {sum[i]+=$i}}}
..


Last edited by zaxxon; 08-23-2010 at 08:18 AM.. Reason: adjusting brackets
# 3  
Old 08-23-2010
Firstly thanks for the quick reply.
Your solution makes sense, but somehow i'm unable to get it to work.
Any other means, can i set the value of N/A to zero or something like that?

---------- Post updated at 05:28 PM ---------- Previous update was at 05:19 PM ----------

Or should the condition be checked inside the for loop also? Is that giving me the problem?

Code:
awk  -F"," '{ for (i=1; i<=NF ; ++i) sum[i] += $i;}

# 4  
Old 08-23-2010
Code:
awk  -F"," '{ for(i=1; i<=NF ; ++i) { if ($i !~ /N\/A/) {sum[i]+=$i}}}

This User Gave Thanks to pravin27 For This Post:
# 5  
Old 08-23-2010
No, still not working,... This has taken me all day... :-(

Here is the error
Code:
N/A,: unknown test operator

I even tried this.

Code:
awk  -F"," '{ for(i=1; (i<=NF) && (i !~ /N\/A/) ; ++i)  {sum[i]+=$i}}

# 6  
Old 08-23-2010
@pravin27:
Thanks for pointing out the missing $.

@pravsripad:
That single line of code works; maybe you got a syntax problem?
Code:
echo "1,5,N/A,10,4"| awk  -F"," '{ for(i=1; i<=NF ; ++i) { if ($i !~ /N\/A/) {sum += $i}}} END{print sum}'
20

# 7  
Old 08-23-2010
Hi.

Is that even an awk error?

The only place I could find it is on ksh on Solaris (maybe not a scientific method Smilie...):

Code:
# strings $(which ksh) | grep test\ operator
unknown test operator

# strings $(which awk) | grep test\ operator
#
# strings $(which nawk) | grep test\ operator
#
# strings /usr/xpg4/bin/awk | grep test\ operator
#

Perhaps you could show the code around your awk, and more about the error output (line no., etc.)?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script that check the argument passed to it and prints error if test condition is not met

I want to make a script that check for the argument passed to it and generates an error in case any character/string argument passed to it. I am using below code, but its not working. can anyone help. #!/bin/bash if ]; then echo 'An integer argument is passed to the script hence... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

2. UNIX for Dummies Questions & Answers

Test: argument expected error in shell script

Hi, I am trying to write a small script that validates if there exist files that start with a pattern in a given directory. Below is the piece of my script: #!/usr/bin/ksh BTFDIR=/opt/ships/temp if then echo 'found' else echo 'not found' fi When I run this... (2 Replies)
Discussion started by: snvniranjanrao
2 Replies

3. Shell Programming and Scripting

Error- test: argument expected

check_build_info_table() { if then export build_info_table=`sqlplus -s sna/dbmanager <<! set pagesize 0 heading off feedback off SELECT DISTINCT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'XYZ' AND TABLE_NAME = 'MY_TABLE'; exit !` ... (3 Replies)
Discussion started by: ambarginni
3 Replies

4. UNIX for Advanced & Expert Users

Error:--test: argument expected--Even though i give an argument.

Hi All, I am running the script VBoxManage list vms |sed 's/"//g' | cut -d " " -f1 > har1out.mytxt result=`cat har1out.mytxt | grep $1' echo $result echo $1 { if then echo pass else echo fail fi (2 Replies)
Discussion started by: harsha85
2 Replies

5. Shell Programming and Scripting

error : test: argument expected

Hello all, I am trying to figure out why i am getting an error while executing the script...altought it seems like its work...but still get the test arguement error...any help would be appericiate...this script basically connects to any oracle db ( just have to pass db name to it)... (4 Replies)
Discussion started by: abdul.irfan2
4 Replies

6. Shell Programming and Scripting

test: argument

Hi, I having trouble with a test numeric value. Here is my code : nb_wanted=$(cat ${type_proto} | grep "#nbr_#branche#" | grep $branche | awk '{print $3}') if ; then nb_ready=$(cat ${fic_tmp_listeSTAF} | wc -l) ... (2 Replies)
Discussion started by: Aswex
2 Replies

7. Shell Programming and Scripting

test: argument expected

# to search a file if it exists and whether its readable or not # if yes print its first 5 lines echo enter the filename to be searched read fname if #-d $fname then echo file doesn exists elif then echo its a directory elif then cat $fname else echo its not readable fi # end of... (9 Replies)
Discussion started by: gotam
9 Replies

8. UNIX for Dummies Questions & Answers

"test: argument expected" error

Hi, No need to say I'm new to unix shell scripting. I have a very simple script that goes this way: for datos in `ls -rt $UNXLOG/26-Jan*` do export arch=`echo $datos |cut -d, -f1` if then export linea1=`grep Debut ${arch}` export horatot=`echo $linea1 |cut -d' ' -f5` ... (7 Replies)
Discussion started by: mvalonso
7 Replies

9. Shell Programming and Scripting

ERROR-> test: argument expected , what does it mean?

I am trying to compare two integer variables in the if statement, but i am getting this "test:argument expected". What am i missing? Why is the if loop not executing correctly? trunkPCM="100000"; more $FILE |while read line do PCM=`echo $line | awk '{ print $2 }'` ... (4 Replies)
Discussion started by: tan102938
4 Replies

10. Shell Programming and Scripting

Facing test: argument expected ERROR

Hi All, When i run the below code : v_shortfield = "" if ; then echo "ravi" else echo "kumar" fi i am getting output as : sam.ksh: test: argument expected kumar Why i am getting error test:argument expected and why i am not getting output as "ravi" :confused: (5 Replies)
Discussion started by: rkrgarlapati
5 Replies
Login or Register to Ask a Question