can awk print column using a variable ??


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting can awk print column using a variable ??
# 1  
Old 09-15-2006
can awk print column using a variable ??

i want to print the column file using awk or cut in dynamic manner
like

trmp=2;temp1=1;temp3=2

awk 'BEGIN{OFS=IFS="\t"} {print $temp,$temp1,$temp3}' client_data.txt

or cut -f $temp1,$temp2,$temp3 -d"\t" file_name .

but it is showing error , In awk can i use variable as in printing the column ??

I use cut also in the following way in my shell script

cut -f $temp3,$temp1,$temp -d"\t" client_data.txt


assist me
# 2  
Old 09-15-2006
Code:
awk -v temp=2 -v temp1=1 -v temp3=3 'BEGIN{OFS=IFS="\t"} {print $temp,$temp1,$temp3}' client_data.txt

# 3  
Old 09-15-2006
Quote:
Originally Posted by anbu23
Code:
awk -v temp=2 -v temp1=1 -v temp3=3 'BEGIN{OFS=FS="\t"} {print $temp,$temp1,$temp3}' client_data.txt

anbu23,
awk's InputFieldSeparator variable is 'FS'.
shell's InputFieldSeparator variable is 'IFS'.
# 4  
Old 09-15-2006
Quote:
Originally Posted by anbu23
Code:
awk -v temp=2 -v temp1=1 -v temp3=3 'BEGIN{OFS=IFS="\t"} {print $temp,$temp1,$temp3}' client_data.txt

Woah, I didn't know FOO=BAR="value" was legal in awk. Good to know!
# 5  
Old 09-15-2006
Code:
temp=2 ;temp1=1 ;temp3=3
awk 'BEGIN{OFS=FS="\t"} {print "'"$temp"'" " " "'"$temp1"'" " " "'"$temp3"'" }' client_data.txt

# 6  
Old 09-18-2006
vgersh,

I tried with this code but it is saying --

f1=${ccseq[0]};f2=${ccseq[1]};f3=${ccseq[2]};f4=${ccseq[3]};f5=${ccseq[4]};f6=${ccseq[5]}

awk -v c1=$f1 -v c2=$f2 -v c3=$f3 -v c4=$f4 -v c5=$f5 -v c6=$f6 'BEGIN{OFS=FS="\t"} {print $c1,$c2,$c3,$c4,$c5,$c6}' ${fname}

awk: syntax error near line 1
awk: bailing out near line 1

can you please help me out !
I want the column value could be anything between 1-6 so i have tried to assign c=$f1 ,c2=$f2,....here f1 ,f2 ,....will be generating the proper column sequence between 1 to 6 and passed to awk to print ..but i am failed to do so.

I am using SunOS.

Last edited by jambesh; 09-18-2006 at 02:29 AM..
# 7  
Old 09-18-2006
the fixed look up column sequence string is
"MANDT SERAIL SERSCHA SEREX EQTYP BSTVP "


Shell Script i had written that actually determine the correct sequence for an input file.
Script:

####Use lookup_data.sh client_file###########

fname=$1
set -A lookup_string MANDT SERAIL SERSCHA SEREX EQTYP BSTVP
set -A cseq
set -A Headr `head -1 ${fname}`
echo ${Headr[*]}
i=0
while [ $i -lt ${#lookup_string[@]} ]
do
j=0
while [ $j -lt ${#Headr[@]} ]
do
if [ "${lookup_string[$i]}" = "${Headr[$j]}" ]
then
echo "look up and file column equal at $j "
cseq[$i]=$j
break
fi
((j=j+1))
done
((i=i+1))
done
i=0
while [ $i -lt ${#cseq[@]} ]
do
ccseq[$i]=`expr ${cseq[$i]} + 1`
echo " ${ccseq[$i]} : \c "
((i=i+1))
done
echo
f1=${ccseq[0]};f2=${ccseq[1]};f3=${ccseq[2]};f4=${ccseq[3]};f5=${ccseq[4]};f6=${ccseq[5]}
awk -v c1=$f1 -v c2=$f2 -v c3=$f3 -v c4=$f4 -v c5=$f5 -v c6=$f6 'BEGIN{OFS=FS="\t"} {print $c1,$c2,$c3,$c4,$c5,$c6}' ${fname}




Input file :
cat client_data.txt
MANDT SERAIL EQTYP SERSCHA SEREX BSTVP
510 hsgdfs 44 sercha sex1 bst233
510 bg 89 fg 23 98
510 gh 89 we sew mn

running the script as $ script_name.sh client_data.txt
giving correct sequence but unable to print in that sequence ...

please assist

can any body tell me why red colored two line are not working ??????

Last edited by jambesh; 09-18-2006 at 04:10 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need awk or Shell script to compare Column-1 of two different CSV files and print if column-1 matche

Example: I have files in below format file 1: zxc,133,joe@example.com cst,222,xyz@example1.com File 2 Contains: hxd hcd jws zxc cst File 1 has 50000 lines and file 2 has around 30000 lines : Expected Output has to be : hxd hcd jws (5 Replies)
Discussion started by: TestPractice
5 Replies

2. Shell Programming and Scripting

Awk: Print count for column in a file using awk

Hi, I have the following input in a file & need output as mentioned below(need counter of every occurance of field which is to be increased by 1). Input: 919143110065 919143110065 919143110052 918648846132 919143110012 918648873782 919143110152 919143110152 919143110152... (2 Replies)
Discussion started by: siramitsharma
2 Replies

3. Shell Programming and Scripting

awk Print New Column For Every Two Lines and Match On Multiple Column Values to print another column

Hi, My input files is like this axis1 0 1 10 axis2 0 1 5 axis1 1 2 -4 axis2 2 3 -3 axis1 3 4 5 axis2 3 4 -1 axis1 4 5 -6 axis2 4 5 1 Now, these are my following tasks 1. Print a first column for every two rows that has the same value followed by a string. 2. Match on the... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

4. Shell Programming and Scripting

awk print variable then fields in variable

i have this variable: varT="1--2--3--5" i want to use awk to print field 3 from this variable. i dont want to do the "echo $varT". but here's my awk code: awk -v valA="$varT" "BEGIN {print valA}" this prints the entire line. i feel like i'm so close to getting what i want. i... (4 Replies)
Discussion started by: SkySmart
4 Replies

5. Shell Programming and Scripting

awk command to print only selected rows in a particular column specified by column name

Dear All, I have a data file input.csv like below. (Only five column shown here for example.) Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 3,2,4,5,6 5,3,5,5,6 From this I want the below output Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 where the second column... (4 Replies)
Discussion started by: ks_reddy
4 Replies

6. Solaris

awk - Print variable number of colums from a starting column

Hi guys, I usualy am able to google awk stuff but I can't find it so far and there are so many awking gurus here that I will give it a shot. I want to print $1;$3;"$5 up to the $NF". In other words, I can have 1000 colums, but need to have $5 up to the end. I started with the idea of... (2 Replies)
Discussion started by: plmachiavel
2 Replies

7. Shell Programming and Scripting

Print column with awk

Hi Masters , Need your help regarding the below issue . I am creating a new file with awk where diff rows in a particular column will different according to the user i/p. If user i/p is 10,11 and 12 and requests for 6 rows then in a particular column will print with 10 10 11 11 12... (6 Replies)
Discussion started by: Pratik4891
6 Replies

8. Shell Programming and Scripting

find expression with awk in only one column, and if it fits, print whole column

Hi. How do I find an expression with awk in only one column, and if it fits, then print that whole column. 1 apple oranges 2 bannanas pears 3 cats dogs 4 hesaid shesaid echo "which number:" read NUMBER (user inputs number 2 for this example) awk " /$NUMBER/ {field to search is field... (2 Replies)
Discussion started by: glev2005
2 Replies

9. Shell Programming and Scripting

to print column using awk

suppose u have a file aaaaa aswn 33332 aasdxe sssee 627627 qqhksd dljlljkl 38682682 so have a output 3332 627627 38682682 (2 Replies)
Discussion started by: cdfd123
2 Replies

10. UNIX for Dummies Questions & Answers

Print last 4 columns (variable column #)

I have rows of data with variable number of columns. Is there an easy way to print out the last 4 columns or rather the 4th and 3rd last column? data looks like this: 24 20:51 N 9 10.00 Overcast OVC110 27 11 30.04 1017.7 24 19:51 N 7 10.00 Mostly Cloudy BKN110 28 15... (19 Replies)
Discussion started by: Da_Duck
19 Replies
Login or Register to Ask a Question