need to get the total # of column for each line - NF not working


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting need to get the total # of column for each line - NF not working
# 1  
Old 12-22-2010
need to get the total # of column for each line - NF not working

Hello,

I just need to print the # of columns for each line of the input file.
The input file uses the ascii 009 tab character.
I specify this character as the FS (field separator) in the BEGIN section, and I know the FS character is correct because I can print it.

When I try to print the # of columns using NF it always prints the #1.
If I try to print using $NF it prints the whole line in the input file.

It is a UNIX shell script that takes parameters from the command line.

The input file is in the same dir as the script. It is called i.txt.

The input file contains:

Code:
met2    100377    11/18/10    0    20101112    98848533    ?    0    ?            08    XPTPLA    0        0    ?        0    0                        ?    ?    0    0    no    0        source.txt
met2    11018521    11/18/10    0    20101117    98850390    ?    0    ?            08    XPTPLA    0        0
    ?        0    0                        ?    ?    0    0    
no    0        source.txt
met2    100377    11/18/10    0    20101112    98848533    ?    0    ?            08    XPTPLA    0        0    ?        0    0                        ?    ?    0    0    no    0        source.txt
met2    11018521    11/18/10    0    20101117
    98850390    ?    0    ?            08    XPTPLA    0        0
    ?        0    0                        ?    ?    0    0    
no    0        source.txt

The source code is this:

Code:
#!/usr/bin/sh

infile="$1/$2"
outfile="$3/$4"
delimiter="\\$5"  
delimiter_conv=`printf $delimiter`;


if [[ ! -r $infile ]]
then
        #echo "file is not readable: $infile"
        exit 1
fi

awk -v out="$outfile" -v delim="$delimiter_conv" '
BEGIN {FS=delim;}
{       

print NF > out;

}' $infile

The name of the script is f.sh.
I execute the script from the command line like this:

Code:
./f.sh . i.txt . out.txt 009

The resulting output file contains this:

Code:
1
1
1
1
1
1
1
1
1

As you can see, there are 9 lines in the input file and 9 lines in the output files.
This is correct however there # 1 is wrong.
Instead of the # 1 it should be the # of columns in that line with the column separator being the ascii 009 tab character.
# 2  
Old 12-22-2010
Try something like...
Code:
$ printf "a\tb\tc\n" | awk -v var="009" 'BEGIN{FS=sprintf("%c", var)} {print NF}'
3

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with calculate the total sum of record in column one

Input file: 101M 10M10D20M1I70M 10M10D39M4I48M 10M10D91M 10M10I13M2I7M1I58M 10M10I15M1D66M Output file: 101M 101 0 0 10M10D20M1I70M 100 1 10 10M10D39M4I48M 97 4 10 10M10D91M 101 0 10 10M10I13M2I7M1I58M 88 13 0 10M10I15M1D66M 91 10 1 I'm interested to count how many total of... (6 Replies)
Discussion started by: perl_beginner
6 Replies

2. Shell Programming and Scripting

Column total

Input `0B0A RDF1+TDEV 45 BL_lmapm03 `0CE7 TDEV 59 BL_lmapm03 `0B09 RDF1+TDEV 70 BL_lmapm02 `0CE6 TDEV 59 BL_lmapm02 `0B08 RDF1+TDEV 70 BL_lmapm01 `0CE5 TDEV 59 BL_lmapm01 Output... (2 Replies)
Discussion started by: greycells
2 Replies

3. Shell Programming and Scripting

Total of a column from a file

Hi i need to calculate the total of a column from a file in ksh vi file.txt System : CBSE ent=0.1 me=Cap Subject Maths Science xxxxx 56 98 yyyy 89 67 ooo 67 32 Here i need to calculate only the total of Maths column alone i.e., 56+89+67 ... (4 Replies)
Discussion started by: Priresh
4 Replies

4. Shell Programming and Scripting

Total of 5th column using awk or any other utility in UNIX??

Hi I have this file which contains Al,AADESH,id1_0,23,2013-01-28,2,2 Al,AADESH,id1_0,23,2013-01-29,4,4 Al,AADESH,id1_0,23,2013-01-30,2,1 Al,AADESH,id1_0,31,2013-01-29,1,1 Al,AESH,id1_0,31,2013-01-31,2,2 Al,AESH,id2_2,23,2013-01-29,1,1 Al,AESH,id2_2,31,2013-01-31,1,1 ... (5 Replies)
Discussion started by: nikhil jain
5 Replies

5. Shell Programming and Scripting

1st column,2nd column on first line 3rd,4th on second line ect...

I need to take one column of data and put it into the following format: 1st line,2nd line 3rd line,4th line 5th line,6th line ... Thanks! (6 Replies)
Discussion started by: batcho
6 Replies

6. Shell Programming and Scripting

Help with total up all column info

Input file 11916 30640 9320 51876 5690 15874 4723 26287 5121 12269 2569 19959 9 71 6 86 Desired output file 11916 30640 9320 51876 5690 15874 4723 26287 5121 12269 2569 19959 9 71 6 86 22736 58854 16618 98208 Last part is the total up of first three data. I used the following... (6 Replies)
Discussion started by: perl_beginner
6 Replies

7. Shell Programming and Scripting

Help with total up based on same column info

Input file data US 100.25 data ENG 235.01 data US 23.12 data ENG 23.01 END UK 230.50 END Russia 20.00 . . Desired output data US 123.37 data ENG 258.02 END UK 230.50 END Russia 20.00 . . (1 Reply)
Discussion started by: perl_beginner
1 Replies

8. Shell Programming and Scripting

Finding the total of a column using awk

Here is my file name countries USSR 8650 262 Asia Canada 3852 24 North America China 3692 866 Asia USA 3615 219 North America Brazil 3286 116 South America India 1269 637 Asia Argentina 1072 ... (8 Replies)
Discussion started by: ironhead3fan
8 Replies

9. Shell Programming and Scripting

sum total by column

Hi, i have a file which content the following: >cat cols data a:23:data data b:76:data data c:-30:data i would like to sum up the value of column 2, but the result that return to me is 0. Can anyone help? i'm using this code to do the sum awk -F" " 'BEGIN {x=0} {x+=$2} END {print... (5 Replies)
Discussion started by: thh
5 Replies
Login or Register to Ask a Question