how do I break line in a file when a pattern is matched ?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how do I break line in a file when a pattern is matched ?
# 1  
Old 10-28-2011
how do I break line in a file when a pattern is matched ?

Hi All,

I am stuck for quite sometime now. Below is a line in my file -
GS|ED|001075|001081|20110626|1806|100803|X|004010ST|130|100803001

This line occurs only once and it is the second line.

I have to break this line into two lines from ST (bold) such that it looks like -
GS|ED|001075|001081|20110626|1806|100803|X|004010
ST
|130|100803001

I have been trying pattern matching techniques using sed and awk but in vain till now. Would appreciate if someone can help me out. I am using bash shell.

--Immi
# 2  
Old 10-28-2011
Code:
echo 'GS|ED|001075|001081|20110626|1806|100803|X|004010ST|130|100803001' | nawk '{gsub("ST",RS "&")}1'

# 3  
Old 10-28-2011
That was awesome !!!

Thanks a lot @vgersh99 !!!

---------- Post updated at 03:29 PM ---------- Previous update was at 03:19 PM ----------

I used awk because the system is very minimal and requesting nawk would take 2-3 days. The file contains numerous records and this is the second line which gotta be split into second and third line. I am trying to achieve like below where Intermediate_2 is the filename containing records:-

sed '2p' Intermediate_2 | awk '{gsub("ST",RS "&")}1'
OR
sed '/GS/p' Intermediate_2 | awk '{gsub("ST",RS "&")}1'

As you would know, placing this in my script produces duplicates of the split-up lines. If I use above sed(s) with -n option, then only the split lines are printed and the other contents goes away.

Is there a workaround to this ?
# 4  
Old 10-28-2011
I think you want this:
Code:
awk 'FNR==2{gsub("ST",RS "&")}1' Intermediate_2

# 5  
Old 10-28-2011
It works !!!

Thanks a lot !!! Smilie
# 6  
Old 10-28-2011
Code:
sed '2 s/ST/\nST/' Intermediate_2

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to print previous line of multiple pattern matched line?

Hello, I have below format log file, Comparing csv_converted_files/2201/9747.1012H67126.5077292103609547345.csv and csv_converted_files/22019/97447.1012H67126.5077292103609547345.csv Comparing csv_converted_files/2559/9447.1012H67126.5077292103609547345.csv and... (6 Replies)
Discussion started by: arvindshukla81
6 Replies

2. UNIX for Advanced & Expert Users

To print from the first line until pattern is matched

Hi I want to print the line until pattern is matched. I am using below code: sed -n '1,/pattern / p' file It is working fine for me , but its not working for exact match. sed -n '1,/^LAC$/ p' file Input: LACC FEGHRA 0 LACC FACAF 0 LACC DARA 0 LACC TALAC 0 LAC ILACTC 0... (8 Replies)
Discussion started by: Abhisrajput
8 Replies

3. Shell Programming and Scripting

Print line between two patterns when a certain pattern matched

Hello Friends, I need to print lines in between two string when a keyword existed in those lines (keywords like exception, error, failed, not started etc). for example, input: .. Begin Edr ab12 ac13 ad14 bc23 exception occured bd24 cd34 dd44 ee55 ff66 End Edr (2 Replies)
Discussion started by: EAGL€
2 Replies

4. Shell Programming and Scripting

ksh : need to get the 4 th line above and 2 nd below the matched pattern in the log file

I have a log file as given below 012/01/21 10:29:02 (111111) Processing Job '23_369468343464564' 2012/01/21 10:29:02 (111111) Making Job '23_369468343464564.0'... 2012/01/21 10:29:04 (111111) Jobnumber '23_369468343464564' was successful 2012/01/21 10:29:04 ... (12 Replies)
Discussion started by: rpm120
12 Replies

5. Shell Programming and Scripting

How to use sed to search a particular pattern in a file backward after a pattern is matched.?

Hi, I have two files file1.txt and file2.txt. Please see the attachments. In file2.txt (which actually is a diff output between two versions of file1.txt.), I extract the pattern corresponding to 1172c1172. Now ,In file1.txt I have to search for this pattern 1172c1172 and if found, I have to... (9 Replies)
Discussion started by: saurabh kumar
9 Replies

6. Shell Programming and Scripting

Insert certain field of matched pattern line above pattern

Hello every, I am stuck in a problem. I have file like this. I want to add the fifth field of the match pattern line above the lines starting with "# @D". The delimiter is "|" eg > # @D0.00016870300|0.05501020000|12876|12934|3||Qp||Pleistocene||"3 Qp Pleistocene"|Q # @P... (5 Replies)
Discussion started by: jyu3
5 Replies

7. Shell Programming and Scripting

Help required on joining one line above & below to the pattern matched string line.

Hi Experts, Help needed on joining one line above & below to the pattern matched string line. The input file, required output is mentioned below Input file ABCD DEFG5 42.0.1-63.38.31 KKKK iokl IP Connection Available ABCD DEFG5 42.0.1-63.38.31 ... (7 Replies)
Discussion started by: krao
7 Replies

8. Shell Programming and Scripting

awk script to move a line after the matched pattern line

I have the following text format in a file which lists the question first and then 5 choices after that the explanantion and finally the answer. 1.The amount of time it takes for most of a worker’s occupational knowledge and skills to become obsolete has been declining because of the... (2 Replies)
Discussion started by: nanchil_guy
2 Replies

9. Shell Programming and Scripting

extracting matched pattern from a line using sed

I am trying to pull certain pieces of data out of a line of a file that matches a certain pattern: The three pieces that I want to pull out of this line are the only occurrences of that pattern within the line, but the rest of the line is not consistent in each file. Basically the line is... (3 Replies)
Discussion started by: ellhef
3 Replies

10. Shell Programming and Scripting

Need to remove few characters from each line till a pattern is matched

Hi All, I want to remove first few characthers from starting of the line till ',' Comma... which needs to be done for all the lines in the file Eg: File content 1,"1234",emp1,1234 2,"2345",emp2,2345 Expected output is ,"1234",emp1,1234 ,"2345",emp2,2345 How can parse... (4 Replies)
Discussion started by: kiranlalka
4 Replies
Login or Register to Ask a Question