How to extract column consistently ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to extract column consistently ?
# 1  
Old 09-29-2011
How to extract column consistently ?

Hi all,

My goal is to always get the value at col4 in a file that contains below.

Code:
col1    col2   col3   col4    col5
        xdf    sdee   sdff    cfdd
ddd     rfg    fgt    grf      drft

I have tried the following but for the first entry(xdf sdee sdff cfdd) the 4th column is col5 instead of col4.


Code:
while read line
do
 echo $line|awk '{print $4}'

done < "test.txt"

The result is the following:

Code:
cfdd
grf

Instead of:

Code:
sdff
grf

Any idea?


Thanks
John

Last edited by radoulov; 09-29-2011 at 03:57 PM.. Reason: Formatting.
# 2  
Old 09-29-2011
Maybe if you used code tags it would be clearer... Check this video tutorial is you are not sure how to use code tags: https://www.unix.com/how-post-unix-li...code-tags.html

---------- Post updated at 01:58 PM ---------- Previous update was at 01:50 PM ----------

Maybe this will work?
Code:
cut -c23-30 test.txt

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 09-29-2011
Hi bartus11,

Thanks..I will this one..

John

---------- Post updated at 02:29 PM ---------- Previous update was at 02:08 PM ----------

Hi bartus11,

I just thought that the lenght of each column are not always the same. Example:

Code:
col1    col2   col3   col4    col5
        xdf    sdee   sdff    cfdd
ddd     rfg    fgt    grf      drft
ddd     rfg    fgt    grfffff      drft
        gfr    fgt    grfffffrr      drft

Thanks
# 4  
Old 09-29-2011
See if this helps you:
Code:
#!/usr/bin/ksh
cut -c23- File | while read mFourth mRest; do
  echo ${mFourth}
done

This User Gave Thanks to Shell_Life For This Post:
# 5  
Old 09-29-2011
A Perl solution:

Code:
$
$
$ cat f30
col1    col2   col3   col4    col5
        xdf    sdee   sdff    cfdd
ddd     rfg    fgt    grf      drft
ddd     rfg    fgt    grfffff      drft
        gfr    fgt    grfffffrr      drft
$
$
$
$ perl -plne 's/^.{22}(\w+).*/$1/' f30
col4
sdff
grf
grfffff
grfffffrr
$
$

tyler_durden
This User Gave Thanks to durden_tyler For This Post:
# 6  
Old 09-29-2011
Code:
cut -c23- infile |awk '{print $1}'

This User Gave Thanks to rdcwayx For This Post:
# 7  
Old 09-30-2011
Solutions that do not rely on the fixed position of the columns:

This will probably be a wee bit slower, but won't require any advance knowledge of the number of columns, nor their position. It does assume that there is no leading whitespace when there is something in column 1.
Code:
awk '{ gsub( "[ \t]+", "," ); split( $0, a, "," ); print a[4] }' input-file


This is space independent, but requires knowledge of the number of columns in a 'short' row.
Code:
awk 'NF == 4 { print $3; next; } {print $4}'

One more that depends on a constant number of columns to the right of the desired column:
Code:
awk '{ print $(NF-1) }'

Change the 1 to be the number of colums from the right most column that you want printed.

Last edited by agama; 09-30-2011 at 12:42 AM.. Reason: Additional thought.
This User Gave Thanks to agama For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get extract and replace column with link in a column where it exists

hi i have sample data a,b,c,d,e,g h http://mysite.xyx z,b,d,f,e,s t http://123124# a,b,c,i,m,nothing d,i,j,e,w,nothing output expected is a,b,c,d,e,http://mysite.xyx z,b,d,f,e,http://123124# a,b,c,i,m,nothing d,i,j,e,w,nothing i can get only links using grep -o 'http.*' i... (8 Replies)
Discussion started by: zozoo
8 Replies

2. Shell Programming and Scripting

Extract number from column

I have a lot of file with a lot of lines following the same pattern the lines go like this: alpha_9/output- -413.74928476 2.6116 and I want it to be: 9 -413.74928476 2.6116 thanks for the help (5 Replies)
Discussion started by: galboski
5 Replies

3. UNIX for Dummies Questions & Answers

Extract column data

I have a file which extracts data from an HTML file For Eg HTML file contains: New York;ABC;145;Yes;YES;No New York;BCD;113;Yes;YES;No New York;NAS;63;Yes;YES;No ------------------------ London-48;CBT;16;Yes;YES;No London-48;CME;17;Yes;YES;No London-48;EUR;52;Yes;YES;No... (3 Replies)
Discussion started by: newkid.7955
3 Replies

4. Shell Programming and Scripting

Need to extract data from Column having variable length column

Hi , I need to extract data from below mentioned data, having no delimiter and havin no fixed column length. For example: Member nbr Ref no date 10000 1000 10202012 200000 2000 11202012 Output: to update DB with memeber nbr on basis of ref no. ... (6 Replies)
Discussion started by: ns64110
6 Replies

5. Shell Programming and Scripting

for each different entry in column 1 extract maximum values from column 2 in unix/awk

Hello, I have 2 columns (1st column has multiple entries but the corresponding values in the column 2 may be the same or different.) however I want to extract unique values for each entry in column 1 by assigning the max value from column 2 SDF4 -0.211654 SDF4 0.978068 ... (1 Reply)
Discussion started by: Diya123
1 Replies

6. Shell Programming and Scripting

Extract column to a new file

Hi All, Using below command to extract text from a file grep -E "^.{20}5004" filename.rtf >> 5004This will give all lines with text 5004 starting at position 20. The file filename.rtf contains several rows (millions). The four characters starting from 20 position is repeating in several... (4 Replies)
Discussion started by: hsehdar
4 Replies

7. Shell Programming and Scripting

Help-Extract the value in the first column

Hi all, I have file like the following. How can i extract the value one by one and pass it to another script using a loop. It would be a great help if someone can help me in this. 001355snap 001356mvpd 001357micr 001358mast 001359lake 001360klaa Like i have a perl script... (2 Replies)
Discussion started by: Tuxidow
2 Replies

8. UNIX for Advanced & Expert Users

How to extract a column

Hi Can anyone please correct, I have problem while trying to grep the 3rd word from the 1st column with the command cat file1.txt | awk '{print$3}' All the words are seperated by comma and not by spaces. File1.txt: abc,123,pqr.123,abc cdr,324,ads.232,123 Result required: pqr.123... (2 Replies)
Discussion started by: sureshcisco
2 Replies

9. Shell Programming and Scripting

How to extract only first column from the file

Dear All, I have a file name pointer.unl. It's contains the information below: O|A|4560333089|PBS|AU1|01/04/2003|30/04/2006|D|IGCD| O|A|4562222089|PBN|AU1|01/02/2006|31/01/2008|D|04065432| O|A|3454d00089|PKR|AU1|01/03/2008||R|sdcdc| I only need to extract first... (11 Replies)
Discussion started by: selamba_warrior
11 Replies

10. Shell Programming and Scripting

column extract help

A, B, C, D, E, F, G 1, 12, 13, 100, 12345, 432, 142324 2, 432, 435, 4543, 543, 5, 436543 324, 5, 543, 4365, 43643, 436543, 436543 how to extract particular column when i need of column of A or B or C i need it to redirect into a new file. (1 Reply)
Discussion started by: cvm
1 Replies
Login or Register to Ask a Question