Can Anyone help me..to do my task in simple way..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Can Anyone help me..to do my task in simple way..
# 1  
Old 01-11-2013
Can Anyone help me..to do my task in simple way..

Hi...

I am trying extract data using 2 files..

1. Data file - DATA.TXT containing data to be extracted
2. Column file - LIST.TXT header column to be extracted

output not coming properly..

if the header field name matches with data file header extract data...this actually I wanted ...

Code:
#!/bin/bash

DATAFILE=${1:-DATA.TXT}
COLUMNFILE=${2:-LIST.TXT}

awk -F, -v colsFile="$COLUMNFILE" '
   BEGIN {
     j=1
     while ((getline < colsFile) > 0) {
        col[j++] = $1
     }
     n=j-1;
     close(colsFile)
     for (i=1; i<=n; i++) s[col[i]]=i
   }
   NR==1 {
     for (f=1; f<=NF; f++)
       if ($f in s) c[s[$f]]=f
     next
   }
   { sep=""
     for (f=1; f<=n; f++) {
       printf("%c%s",sep,$c[f])
       sep=FS
     }
     print ""
   }
' "$DATAFILE"

Code:
cat DATA.TXT
ID, head1, head2, head3, head4
1, 25.5, 1364.0, 22.5, 13.2
2, 10.1, 215.56, 1.15, 22.2

cat LIST.TXT
ID
head1
head4

 sh extract.sh DATA.TXT LIST.TXT
1,1, 25.5, 1364.0, 22.5, 13.2,1, 25.5, 1364.0, 22.5, 13.2
2,2, 10.1, 215.56, 1.15, 22.2,2, 10.1, 215.56, 1.15, 22.2

and I want to display it as space separated ..

Code:
awk '{print $3,$2,$1}' FS="," DATA.TXT
whether here some changes can be done to get desired output

please help..


Code:
awk 'NR==1{for(i=1;i<=NF;i++)if($i~/ID/)f[n++]=i}{for(i=0;i<n;i++)printf"%s%s",i?" ":"",$f[i];print""}' DATA.TXT

I could able to get output from above script but, I have so many columns, how can I search, and display as space or tab separated.

Last edited by nex_asp; 01-11-2013 at 03:08 AM.. Reason: to profive more information
# 2  
Old 01-11-2013
Try this:
Code:
$ awk   'NR==FNR {Cols=Cols(Cols?"|":"")$1; next}
         FNR==1 {for (i=1;i<=NF;i++) if (match($i,Cols)) Ar[++n]=i}
         {for (i=1;i<=n;i++) printf "%s ", $(Ar[i]); printf "\n"}
        ' FS=", " list data
ID head1 head4 
1 25.5 13.2 
2 10.1 22.2

# 3  
Old 01-11-2013
worked fine, for file which I attached, but when I tried with another file...its listing all the columns...
# 4  
Old 01-11-2013
Then, please, provide a meaningful sample. What do you expect? If the sample files do not represent your real life data, why should the program work on the latter?
# 5  
Old 01-11-2013
Hi...here I am attaching new sample file...pls..see...
# 6  
Old 01-11-2013
Works perfectly for me - once I've eliminated or corrected for the errors in your files.
a) field separator in data.txt is just a comma, not comma space as in your sample
b) extra empty line at the end of the list.txt file ruins the creation of the Cols regex

And, you should remove the windows control chars from your file when working in unix environments. Doesn't hurt here, but problems will come soon.
This User Gave Thanks to RudiC For This Post:
# 7  
Old 01-11-2013
Thank you so much RudiC, I wasn't know about this.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Syslog.conf: looking for a simple answer on a simple question

Cheers! In /etc/syslog.conf, if an error type is not specified, is it logged anywhere (most preferable is it logged to /var/log/messages) or not? To be more precise I am interested in error and critical level messages. At default these errors are not specified in syslog.conf, and I need to... (6 Replies)
Discussion started by: dr1zzt3r
6 Replies

2. Shell Programming and Scripting

Help making simple perl or bash script to create a simple matrix

Hello all! This is my first post and I'm very new to programming. I would like help creating a simple perl or bash script that I will be using in my work as a junior bioinformatician. Essentially, I would like to take a tab-delimted or .csv text with 3 columns and write them to a "3D" matrix: ... (16 Replies)
Discussion started by: torchij
16 Replies

3. Shell Programming and Scripting

need a script that does a simple task on multiple unix servers.

hi guys, i need a script that does a simple task on multiple aix servers. if possible with both telnet and ssh. the simple task i wanna do is connect to a server and run "ifconfig -a" and get the output. nextweek i need to do similar jobs on like 50 servers... :( can anybody help me with making... (2 Replies)
Discussion started by: curtis911
2 Replies

4. Shell Programming and Scripting

simple aggregate task

Hi experts, I need an help on the task below. INPUT: values separated by the tab,first row is the header 20110609 AS A 300.5000 20110609 AS R 200.5000 20110609 BR A 111.5000 20110609 BR R 222.5000 20110610 AS A 100.5500 20110610 AS ... (2 Replies)
Discussion started by: hernand
2 Replies

5. Shell Programming and Scripting

Task

Hi experts, I have a problem with the below shell task: I need to modify the file creatin a paired row , per each row which matches filter (e.g. number of nonempty columns = 5) Output should look like this: second row is original one from the input, first row(red) is pairing row, it's... (29 Replies)
Discussion started by: hernand
29 Replies

6. Shell Programming and Scripting

task

Hi all, I'm newbie and stuck here. Thanks for any help. Input(txt file) a b X c d Y e f Z g h W Requested output: a b X Y c d Y X e f Z W g h W Z Please use code tags when posting data and code samples! (10 Replies)
Discussion started by: hernand
10 Replies

7. Shell Programming and Scripting

Need a help to automate a task

I need to automate a manual task using shell scripting. The scenario is like :- #!/usr/bin/sh echo "please enter the name of the lab server to test ..." read s ssh $s This is peace of the script which will allow me to login to another server using "ssh". I have a conf file which is having... (4 Replies)
Discussion started by: Renjesh
4 Replies

8. Shell Programming and Scripting

Simple renaming task?

Hi guys, could someone tell me how i could create a label like this: mybox01, mybox04, mybox12, mybox10 when i have the values "mybox1", "mybox4","mybox12","mybox10" as a prefix and a number. If the number is below 10 then add a zero before the number? A one liner? A long approach is to... (2 Replies)
Discussion started by: muay_tb
2 Replies

9. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies

10. Shell Programming and Scripting

comment and Uncomment single task out of multiple task

I have a file contains TASK gsnmpproxy { CommandLine = $SMCHOME/bin/gsnmpProxy.exe } TASK gsnmpdbgui { CommandLine = $SMCHOME/bin/gsnmpdbgui.exe I would like to comment and than uncomment specific task eg TASK gsnmpproxy Pls suggest how to do in shell script (9 Replies)
Discussion started by: madhusmita
9 Replies
Login or Register to Ask a Question