Help with Data Sorting Command


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with Data Sorting Command
# 1  
Old 09-29-2009
Help with Data Sorting Command

Hi,

I have a problem on data sorting, example my file as below:

123 123/789 aaa bbb ccc ddd (adf)
112 112/123 aaa bbb ccc (ade)
102 1a3/7g9 (adf)03
110 12b/129 aaa bbb ccc ddd fff(a8f)03
117 42f/8c9 aaa bbb ccc ddd (adf)
142 120/tyu fff
612 023/w03 bbb ccc ddd (adf)03 lll kkk
152 d68/b56 {eng} aaa ddd (a)05
710 129/po9 aaa bbb ccc ddd (adf)
189 822/78y aaa ccc ddd (adf)03
345 g67/239 aaa bbb ccc ddd (adf) eng jkl ggg
189 822/78y (adf)03

Not sure what is the command that i can use to extract and display the data only on column 3(eg, aaa,bbb,ccc) then elimanate the line that without aaa,bbb,ccc and any others unmatched attributes(eg eng,ggg,ddd...)

example output:
123 123/789 aaa bbb ccc
112 112/123 aaa bbb ccc
110 12b/129 aaa bbb ccc
117 42f/8c9 aaa bbb ccc
612 023/w03 bbb ccc
152 d68/b56 aaa
710 129/po9 aaa bbb ccc
189 822/78y aaa ccc
345 g67/239 aaa bbb ccc


appreciate your help!!!
# 2  
Old 09-29-2009
HI,

make use of this code.....

Code:
grep -e "aaa" -e "bbb" -e "ccc" data|egrep -o '.*ccc'


It gives the output

Code:
123 123/789 aaa bbb ccc
112 112/123 aaa bbb ccc
110 12b/129 aaa bbb ccc
117 42f/8c9 aaa bbb ccc
612 023/w03 bbb ccc
710 129/po9 aaa bbb ccc
189 822/78y aaa ccc
345 g67/239 aaa bbb ccc


Regards,
Sanjay

Last edited by sanjay.login; 09-29-2009 at 06:59 PM..
# 3  
Old 09-29-2009
i've try the method above, but result returned inaccurately.
Is there any other way to sort the data, other than grep

117 42f/8c9 aaa bbb ccc
612 023/w03 fff bbb ccc
710 129/po9 aaa bbb ccc
# 4  
Old 09-30-2009
Quote:
Originally Posted by 793589
i've try the method above, but result returned inaccurately
Sanjay's code works on the input posted - which seems to differ from the input you're actually using: there's no line '612 ... fff ...' in the data given to us, and to my knowledge, grep is not that creative Smilie

Code:
[house@leonov] cat test.file | grep -e 'aaa' -e 'bbb' -e 'ccc' | egrep -o '.*ccc'
[...]
612 023/w03 bbb ccc
[...]

# 5  
Old 09-30-2009
I'm sorry Smilie , acutally i didn't gave the full set of data from my file(i just copy a part from my file) and that's why you guys did not see the line with "612 023/w03 fff bbb ccc"....

maybe, i'm in too rush and not given the details enough...
my file is actually like this,
0123123:56:Y01:S32 123/00/00/000T ddasr_#3T aaa#6 bbb ccc ddd (adf) 88
6897112:46:R51:B00 112/32/03/003M ca_a#6 aaa# ddpsr_2A_RA#3T ddasr_#3T bbb# ccc (ade) ce_b#6 27
5548102:66:Y03:B02 1a3/7g9/65/7YY (adf)03 ddmsrsb2sgy_2g#188T ddMgfdus1889rsb2sgy_ART_2g#36T
1645810:97:Y87:B55 12b/129/00/110 prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 aaa zmzgjklphmk5af#6 ddp35sad2Cr_2C_RA#35T bbb ccc# ddd fff(a8f)03 63
5348117:02:R89:B31 42f/8c9/28/7YU prefsdb_sgdbf_bdfb_aaa aaa#6 bbb ccc ddd (adf) 99
1479992:93:R22:B85 120/tyu/36/DFU prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
6745512:76:Y65:S99 023/w03/10/11P ddmsrsb2sgy_2g#188T bbb ccc ddd# (adf)03 lll kkk#
0234152:85:R00:S55 d68/b56/65/11U {eng} aaa ddd (a)05 ddmsrsb2sgy_2g#88
7689710:65:R01:B45 129/po9/85/027 aaa bbb ccc ddd (adf)
1001289:10:R01:B76 822/78y/64/008 prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
3356745:23:Y66:B96 g67/239/65/11M aaa bbb#7 ccc ddd (adf) eng jkl ggg prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
1889429:15:Y02:S88 822/78y/00/04M (adf)03

my 1st question, for the column with bold:
what is the suitable command(other than grep) use to extract and eliminate all unwanted alphabet/symbol/number and display exactly "aaa","bbb" and "ccc"...

the output should look like this
0123123:56:Y01:S32 123/00/00/000T aaa bbb ccc
6897112:46:R51:B00 112/32/03/003M aaa bbb ccc
1645810:97:Y87:B55 12b/129/00/110 aaa bbb ccc
5348117:02:R89:B31 42f/8c9/28/7YU aaa bbb ccc
6745512:76:Y65:S99 023/w03/10/11P bbb ccc
0234152:85:R00:S55 d68/b56/65/11U aaa
7689710:65:R01:B45 129/po9/85/027 aaa bbb ccc
3356745:23:Y66:B96 g67/239/65/11M aaa bbb ccc

my 2nd question, for the column 2 with "/":
What is the most appropriate/eazy command to help me remove 1st and 2nd "/" and then replace the 3rd "/" with "."

i'm expected the output look in this way,
0123123:56:Y01:S32 1230000.000T aaa bbb ccc
6897112:46:R51:B00 1123203.003M aaa bbb ccc
1645810:97:Y87:B55 12b12900.110 aaa bbb ccc
5348117:02:R89:B31 42f8c928.7YU aaa bbb ccc
6745512:76:Y65:S99 023w0310.11P bbb ccc
0234152:85:R00:S55 d68b5665.11U aaa
7689710:65:R01:B45 129po985.027 aaa bbb ccc
3356745:23:Y66:B96 g6723965.11M aaa bbb ccc

Thanks in advance Smilie
# 6  
Old 10-01-2009
Hi 793589,


Hope this code will work for you.

Code:
awk '{x=$1" "$2; for (i=3;i<=NF;i++){ if ($i~"^aaa"||$i~"^bbb"||$i~"^ccc"){$i=substr($i,1,3);x=x" "$i}}; print x;x="" }' infile |awk 'NF>2{print $0}'



input :

Code:
0123123:56:Y01:S32 123/00/00/000T ddasr_#3T aaa#6 bbb ccc ddd (adf) 88
6897112:46:R51:B00 112/32/03/003M ca_a#6 aaa# ddpsr_2A_RA#3T ddasr_#3T bbb# ccc (ade) ce_b#6 27
5548102:66:Y03:B02 1a3/7g9/65/7YY (adf)03 ddmsrsb2sgy_2g#188T ddMgfdus1889rsb2sgy_ART_2g#36T
1645810:97:Y87:B55 12b/129/00/110 prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 aaa zmzgjklphmk5af#6 ddp35sad2Cr_2C_RA#35T bbb ccc# ddd fff(a8f)03 63
5348117:02:R89:B31 42f/8c9/28/7YU prefsdb_sgdbf_bdfb_aaa aaa#6 bbb ccc ddd (adf) 99
1479992:93:R22:B85 120/tyu/36/DFU prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
6745512:76:Y65:S99 023/w03/10/11P ddmsrsb2sgy_2g#188T bbb ccc ddd# (adf)03 lll kkk#
0234152:85:R00:S55 d68/b56/65/11U {eng} aaa ddd (a)05 ddmsrsb2sgy_2g#88
7689710:65:R01:B45 129/po9/85/027 aaa bbb ccc ddd (adf)
1001289:10:R01:B76 822/78y/64/008 prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
3356745:23:Y66:B96 g67/239/65/11M aaa bbb#7 ccc ddd (adf) eng jkl ggg prefsdb_sgdbf_bdfb_aaa zzgthmk5af_6#6 fff 26
1889429:15:Y02:S88 822/78y/00/04M (adf)03

output:

Code:
0123123:56:Y01:S32 123/00/00/000T aaa bbb ccc
6897112:46:R51:B00 112/32/03/003M aaa bbb ccc
1645810:97:Y87:B55 12b/129/00/110 aaa bbb ccc
5348117:02:R89:B31 42f/8c9/28/7YU aaa bbb ccc
6745512:76:Y65:S99 023/w03/10/11P bbb ccc
0234152:85:R00:S55 d68/b56/65/11U aaa
7689710:65:R01:B45 129/po9/85/027 aaa bbb ccc
3356745:23:Y66:B96 g67/239/65/11M aaa bbb ccc


and for your second question for first "/" replace wth null and third "/" replaced with a "."

you can go for the command
Code:
sed 's/\//./3g
s/\///g' file_name

so for single command you can go for :

Code:
awk '{x=$1" "$2; for (i=3;i<=NF;i++){ if ($i~"^aaa"||$i~"^bbb"||$i~"^ccc"){$i=substr($i,1,3);x=x" "$i}}; print x;x="" }' infile |awk 'NF>2 {print $0}'|sed 's/\//./3g
s/\///g'

which will give the desired output:
Code:
0123123:56:Y01:S32 1230000.000T aaa bbb ccc
6897112:46:R51:B00 1123203.003M aaa bbb ccc
1645810:97:Y87:B55 12b12900.110 aaa bbb ccc
5348117:02:R89:B31 42f8c928.7YU aaa bbb ccc
6745512:76:Y65:S99 023w0310.11P bbb ccc
0234152:85:R00:S55 d68b5665.11U aaa
7689710:65:R01:B45 129po985.027 aaa bbb ccc
3356745:23:Y66:B96 g6723965.11M aaa bbb ccc

enjoy Smilie



Regards,
Sanjay

Last edited by sanjay.login; 10-01-2009 at 07:44 AM..
# 7  
Old 10-01-2009
Thank you very much...
To have a better understand, could you please help to give a simple brief on every switchs that you have applied on awk command?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How AS 400 sorting data?

Hi Gurus, I have a requests to sort data based on AS 400 sorting order. below is example: the data is sorted by ascending order. could anybody explain how AS 400 sort data? IMM00007 07918607 1242 423 (3 Replies)
Discussion started by: green_k
3 Replies

2. Shell Programming and Scripting

Sorting the data with date

Hi, PFB the data: C_Random_130417 Java_Random_130518 Perl_Random_120519 Perl_Random_120528 so the values are ending with year,i.e.,130417 i want to sort the values with date. i want the output like this: Perl_Random_120519 Perl_Random_120528 C_Random_130417 Java_Random_130518 can... (5 Replies)
Discussion started by: arindam guha
5 Replies

3. Shell Programming and Scripting

Sorting the Data

My actual data looks like below i have given only format. i can't give exact data format of my requirement due to some reasons. I this set of data lines about 5000 I need to come up with information in below exact format of my data set : Line<space>Number1<space>"somedata":... (1 Reply)
Discussion started by: ckaramsetty
1 Replies

4. UNIX for Dummies Questions & Answers

Help with Data Sorting

Hi All, I have a long list made of 4 columns containing entries such as the following example: a b c d 0 0 0 0 1 2 1 2 2 5 3 4 3 8 4 6 4 10 9 8 5 15 8 10So the top row is the header and I need to arrange the data in a way as to... (11 Replies)
Discussion started by: pawannoel
11 Replies

5. UNIX for Dummies Questions & Answers

Sorting data

Hello guys. I need help figuring this one out. It's probably really easy. Thanks in advance! I have a file say for example containing this: Rice Food Carrots Food Beans Food Plates Kitchen Fork Kitchen Knives Kitchen I need: Food Rice, Carrots, Beans Kitchen Plates, Fork,... (7 Replies)
Discussion started by: visuelz
7 Replies

6. UNIX for Dummies Questions & Answers

Sorting data from a to z

Hi, Let's say I have these 3 columns; NGC1234 6 9 SL899 4 1 NGC1075 8 3 SL709 5 2 And I want to sort the data according to the first column (from a to z) like having them as: NGC1075 8 3 NGC1234 6 9 SL709 5 2 SL899 4 1 Can that be done... (2 Replies)
Discussion started by: cosmologist
2 Replies

7. Shell Programming and Scripting

PERL data - sorting

Hello, I have a page where multiple fields and their values are displayed. But I am able to sort only a few fields. When I looked into the issue, it is seen that the for each row of info , an unique id is generated and id.txt is generated and saved. Only those fields which are inside that id.txt... (3 Replies)
Discussion started by: eagercyber
3 Replies

8. UNIX for Dummies Questions & Answers

sorting data from who by IP

Hello. I have an RS/6000 running AIX 4 and I need to be able to see if there are any users that are logged on more than once from the same terminal so I can kick them off to make room for other terminals. 64 connections is the limit. Currently I am doing this: who | more and then manually... (11 Replies)
Discussion started by: raidzero
11 Replies

9. Shell Programming and Scripting

Sorting blocks of data

Hello all, Below is what I am trying to accomplish: I have a file that looks like this /* ----------------- xxxx.y_abcd_00000050 ----------------- */ jdghjghkla sadgsdags asdgsdgasd asdgsagasdg /* ----------------- xxxx.y_abcd_00000055 ----------------- */ sdgsdg sdgxcvzxcbv... (8 Replies)
Discussion started by: alfredo123
8 Replies
Login or Register to Ask a Question