Visit Our UNIX and Linux User Community


Extract specific data and change its arrangment


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract specific data and change its arrangment
# 1  
Old 03-30-2010
Extract specific data and change its arrangment

Input:
Code:
HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    beginner    836    7001        +    ID=g1.t1;Parent=g1
HS04636    PROGRAM    position    836    836        +    Parent=g1.t1
HS04636    PROGRAM    type    836    1017        +    Parent=g1.t1
HS04636    PROGRAM    style    966    968    .        Parent=g1.t1
HS04636    PROGRAM    range    966    1017        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    range    1818    1934        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    1818    1934        +    Parent=g1.t1
HS04636    PROGRAM    range    2055    2198        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2055    2198        +    Parent=g1.t1

HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    range    2852    2995        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2852    2995        +    Parent=g1.t1
HS04636    PROGRAM    range    3426    3607        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    3426    3607        +    Parent=g1.t1

Desired output:
Code:
HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    type    836    1017        +    Parent=g1.t1
HS04636    PROGRAM    range    966    1017        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    1818    1934        +    Parent=g1.t1
HS04636    PROGRAM    range    1818    1934        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2055    2198        +    Parent=g1.t1
HS04636    PROGRAM    range    2055    2198        +    ID=g1.t1.range;Parent=g1.t1

HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    type    2852    2995        +    Parent=g1.t1
HS04636    PROGRAM    range    2852    2995        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    3426    3607        +    Parent=g1.t1
HS04636    PROGRAM    range    3426    3607        +    ID=g1.t1.range;Parent=g1.t1

The awk code that I have try and its respectively output result which is different with my desired output result:
Code:
awk '$3~/source/||/type/||/range/{print}' input file
HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    type    836    1017        +    Parent=g1.t1
HS04636    PROGRAM    range    966    1017        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    range    1818    1934        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    1818    1934        +    Parent=g1.t1
HS04636    PROGRAM    range    2055    2198        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2055    2198        +    Parent=g1.t1

HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    range    2852    2995        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2852    2995        +    Parent=g1.t1
HS04636    PROGRAM    range    3426    3607        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    3426    3607        +    Parent=g1.t1

Actually I plan to extract all the content related to "source" "range" "type" and then from the content, I plan to arrange the data follow the arrangement of one "source" attached with "type" and then "range" subsequently.
Sorry if I can't express well what I desired.
Hopefully from the desired output result shown above, anybody can guide me to archive my desired goal?
Thanks again and a lot.
# 2  
Old 03-30-2010
please try this
Code:
awk '{if($3 ~ /type/ || /range/ || /source/) { var=$0; if($var ! $0) {print;} }}' filename


Last edited by Franklin52; 03-30-2010 at 08:19 AM.. Reason: Please use code tags, thank you!
# 3  
Old 03-31-2010
Hi ktrimu,
I just try the awk code that you suggested.
Unfortunately, it can't give my desired output result Smilie
Your awk code give the output result same as what my wrong awk code did Smilie
Code:
awk '{if($3 ~ /type/ || /range/ || /source/) { var=$0; if($var ! $0) {print;} }}' filename
HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    type    836    1017        +    Parent=g1.t1
HS04636    PROGRAM    range    966    1017        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    range    1818    1934        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    1818    1934        +    Parent=g1.t1
HS04636    PROGRAM    range    2055    2198        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2055    2198        +    Parent=g1.t1

HS04636    PROGRAM    source    836    7001        +    ID=g1
HS04636    PROGRAM    range    2852    2995        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    2852    2995        +    Parent=g1.t1
HS04636    PROGRAM    range    3426    3607        +    ID=g1.t1.range;Parent=g1.t1
HS04636    PROGRAM    type    3426    3607        +    Parent=g1.t1

Do you got any better advice or suggestion to improve the awk code to reach my desired output result?
Thanks again and a lot for your advice.

Previous Thread | Next Thread
Test Your Knowledge in Computers #278
Difficulty: Easy
A monolithic kernel is an operating system architecture where the entire operating system is working in kernel space.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How-To Extract specific data from a file.

data.txt has several information like the below.. <SERVER>:WEB:MYDOM01:/tmp/cong/MYDOM01,/tmp/app/MYDOM01 <WEBER>:CANES:https-web01,https-web02:/web/apps/https-web01/config <SERVER>:WEB:MYDOM07:/tmp/cong/MYDOM07,/tmp/app/MYDOM07... (7 Replies)
Discussion started by: mohtashims
7 Replies

2. Shell Programming and Scripting

How to extract specific data?

Bash scripting beginner here... I have many folders, each folder representing one subject. Not all subjects have all the required files, so I need to somehow cycle through all the data and then extract the data only from subjects who have no files missing. I tried to output the ls command, but... (4 Replies)
Discussion started by: LeftoverStew
4 Replies

3. HP-UX

How to extract data for a specific process from ovpa?

Hi Friends, One question. Supposed I want to extract data only for process named "sqlplus" how can I do it. Any suggestions? I don't want all the data as it is not useful to me e.g.. Command I use is given below extract -xp -p -r repfile -b"03/15/13 7:00 PM" -e"03/15/13 09:30 PM" -f... (1 Reply)
Discussion started by: kunwar
1 Replies

4. Shell Programming and Scripting

Extract data based on specific search criteria

I have a huge file (about 2 millions records) contains data separated by “,” (comma). As part of the requirement, I can't change the format. The objective is to remove some of the records with the following condition. If the 23rd field on each line start with 302 , I need to remove that from the... (4 Replies)
Discussion started by: jaygamini
4 Replies

5. Shell Programming and Scripting

Extract specific read from a data

Input file: #abc_1 SAASFASFGGDSGDSGDSGSDGSDGSDGSDGSDGSDGSDGDS Output file: FASFGGDSGDS I just want to print out the read from position 5 until position 15 from the data. Below is the code that I just try but it is failed to get my desired output: grep -v '#' input_file | awk... (5 Replies)
Discussion started by: patrick87
5 Replies

6. Shell Programming and Scripting

Extract specific data content from a long list of data

My input: Data name: ABC001 Data length: 1000 Detail info Data Direction Start_time End_time Length 1 forward 10 100 90 1 forward 15 200 185 2 reverse 50 500 450 Data name: XFG110 Data length: 100 Detail info Data Direction Start_time End_time Length 1 forward 50 100 50 ... (11 Replies)
Discussion started by: patrick87
11 Replies

7. Shell Programming and Scripting

Extract all the content after a specific data

My input: >seq_1 DSASSTRRARRRRTPRTPSLRSRRSDVTCS >seq_3 RMRLRRWRKSCSERS*RRSN >seq_8 RTTGLSERPRLPTTASRSISSRWTR >seq_10 NELPLEKGSLDSISIE >seq_9 PNQGDAREPQAHLPRRQGPRDRPLQAYA+ QVQHRRHDHSRTQH*LCRRRQREDCDRLHR >seq_4 DRGKGQAGCRRPQEGEALVRRCS>seq_6 FA*GLAAQDGEA*SGRG My output: Extract all... (22 Replies)
Discussion started by: patrick87
22 Replies

8. Shell Programming and Scripting

Extract data into file with specific field specs

:confused: I have a tab delimited file that I need to extract data from and into a file with specific field specs. Each field has to be a certain amount of characters. So, the name field (from delimited file) might have only 15 characters but needs to be 25 (in new file) so I need to insert spaces... (5 Replies)
Discussion started by: criddel
5 Replies

9. Shell Programming and Scripting

Extract data from log file from or after the specific date

Hi , I am having a script which will start a process and appends the process related logs to a log file. The log file writes logs with every line starting with date in the format of: date +"%Y %b %d %H:%M:%S". So, in the script, before I start the process, I am storing the date as DATE=`date +"%Y... (5 Replies)
Discussion started by: chiru_h
5 Replies

10. Shell Programming and Scripting

extract specific data from xml format file.

Hi, I need to extract the start time value (bold, red font) under the '<LogEvent ID="Timer Start">' tag (black bold) from a file with the following pattern. There are other LogEventIDs listed in the file as well, making it harder for me to extract out the specific start time that I need. . .... (7 Replies)
Discussion started by: 60doses
7 Replies

Featured Tech Videos