Merging rows after matching a pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Merging rows after matching a pattern
# 1  
Old 11-26-2013
Wrench Merging rows after matching a pattern

Hi All,

I have the below file where I want the lines to merged based on a pattern.

Code:
 
AFTER
CMMILAOJ
CMMILAAJ
AFTER
CMDROPEJ
CMMIMVIJ
CMMIRNTJ
CMMIRNRJ
CMMIRNWJ
CMMIRNAJ
CMMIRNDJ
AFTER
CMMIRNTJ
CMMIRNRJ
CMMIRNWJ
CMMIRNAJ
CMMIRNDJ
CMDMAETJ

I want to join lines starting from each "AFTER" word until the next "AFTER" word comes in below format. output should look like below, note the braces and commas.

Code:
 
AFTER (CMMILAOJ, CMMILAAJ)
AFTER (CMDROPEJ, CMMIMVIJ, CMMIRNTJ, CMMIRNRJ, CMMIRNWJ, CMMIRNAJ, CMMIRNDJ)
AFTER (CMMIRNTJ, CMMIRNRJ, CMMIRNWJ, CMMIRNAJ, CMMIRNDJ, CMDMAETJ)


Last edited by DukeNuke2; 11-26-2013 at 06:48 PM.. Reason: corrected spelling in title
# 2  
Old 11-26-2013
An awk solution:
Code:
awk '
        !/AFTER/ {
                s = s ? s "," $0 : "(" $0
        }
        /AFTER/ && s {
                print "AFTER", s ")"
                s = ""
        }
        END {
                print "AFTER", s ")"
        }
' file

Use nawk or /usr/xpg4/bin/awk on Solaris.
This User Gave Thanks to Yoda For This Post:
# 3  
Old 11-26-2013
I tried that but gave me a syntax error
Code:
 
 
awk '
        !/AFTER/ {
                s = s ? s "," $0 : "(" $0
        }
        /AFTER/ && s {
                print "AFTER", s ")"
                s = ""
        }
        END {
                print "AFTER", s ")"
        }
' test.out

awk: syntax error near line 3
awk: illegal statement near line 3
awk: syntax error near line 5
awk: bailing out near line 5


Last edited by Don Cragun; 04-22-2015 at 11:31 PM.. Reason: Fix tags.
# 4  
Old 11-26-2013
Please use code tags, not icode tags for posting code fragments or data samples.

I told you before to use nawk or /usr/xpg4/bin/awk instead of awk on Solaris.
This User Gave Thanks to Yoda For This Post:
# 5  
Old 11-26-2013
Thanks a lot
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Merging rows based on same ID in First column.

Hellow, I have a tab-delimited file with 3 columns : BINPACKER.13259.1.p2 SSF48239 BINPACKER.13259.1.p2 PF13243 BINPACKER.13259.1.p2 G3DSA:1.50.10.20 BINPACKER.13259.2.p2 SSF48239 BINPACKER.13259.2.p2 PF13243 BINPACKER.13259.2.p2 G3DSA:1.50.10.20... (7 Replies)
Discussion started by: anjaliANJALI
7 Replies

2. UNIX for Dummies Questions & Answers

Merging two files based on matching columns

Hi, I am facing issues while accomplishing below task. We have two files Test1.txt and Test2.txt. We have to match 1st column of Test1.txt file with 2nd column of Test2.txt and then merge 2nd file with the 1st file. In the output we should select column 1 and 2 from the 1st file and column 1... (5 Replies)
Discussion started by: Prathmesh
5 Replies

3. Shell Programming and Scripting

Sed: printing lines AFTER pattern matching EXCLUDING the line containing the pattern

'Hi I'm using the following code to extract the lines(and redirect them to a txt file) after the pattern match. But the output is inclusive of the line with pattern match. Which option is to be used to exclude the line containing the pattern? sed -n '/Conn.*User/,$p' > consumers.txt (11 Replies)
Discussion started by: essem
11 Replies

4. Shell Programming and Scripting

Merging two special character separated files based on pattern matching

Hi. I have 2 files of below format. File1 AA~1~STEVE~3.1~4.1~5.1 AA~2~DANIEL~3.2~4.2~5.2 BB~3~STEVE~3.3~4.3~5.3 BB~4~TIM~3.4~4.4~5.4 File 2 AA~STEVE~AA STEVE WORKS at AUTO COMPANY AA~DANIEL~AA DANIEL IS A ELECTRICIAN BB~STEVE~BB STEVE IS A COOK I want to match 1st and 3rd... (2 Replies)
Discussion started by: crypto87
2 Replies

5. Shell Programming and Scripting

Merging rows in awk

Hello, I have a data format as follows: Ind1 0 1 2 Ind1 0 2 1 Ind2 1 1 0 Ind2 2 2 0 I want to use AWK to have this output: Ind1 00 12 21 Ind2 12 12 00 That is to merge each two rows with the same row names. Thank you very much in advance for your help. (8 Replies)
Discussion started by: Homa
8 Replies

6. Shell Programming and Scripting

Merging rows using two common rows.

Hi.. My requirement is simple but unable to get that.. File 1 : 3 415 A G 4 421 G . 39 421 G A 2 421 G A,C 41 427 A . 4 427 A C 42 436 G . 3 436 G C 43 445 C . 2 445 C T 41 447 A . Output (4 Replies)
Discussion started by: empyrean
4 Replies

7. UNIX Desktop Questions & Answers

merging files and add missing rows

hello all, I have files that have a specific way for naming the first column they are make of five names in Pattern of 3 Y = (no case sensitive) so the files are names $Y-$Y-$Y or $X-$Y-$Z depending how we look they only exist of the pattern exist now I want to create a file from them that... (9 Replies)
Discussion started by: A-V
9 Replies

8. UNIX for Dummies Questions & Answers

merging rows into new file based on rows and first column

I have 2 files, file01= 7 columns, row unknown (but few) file02= 7 columns, row unknown (but many) now I want to create an output with the first field that is shared in both of them and then subtract the results from the rest of the fields and print there e.g. file 01 James|0|50|25|10|50|30... (1 Reply)
Discussion started by: A-V
1 Replies

9. Shell Programming and Scripting

Merging rows with same column 1 value

I have the following space-delimited input: 1 11.785710 117.857100 1 15 150 1 20 200 1 25 250 3 2.142855 21.428550 3 25 250 22 1.071435 10.714350 The first field is the ID number, the second field is the percentage of the total points that the person has and the third column is the number... (3 Replies)
Discussion started by: mdlloyd7
3 Replies

10. Shell Programming and Scripting

Merging of rows

Hi guys, Wish you all a very Happy New Year!!!. Thanks in advance. I want to read a file and merge the rows which have '\n' in it. The rows could be > 50,000 bytes. The script should merge all the rows till the next row starts with word 'Type|'. ex.... (24 Replies)
Discussion started by: ssachins
24 Replies
Login or Register to Ask a Question