How to add the line to previous line in | delimited text?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to add the line to previous line in | delimited text?
# 1  
Old 07-07-2016
How to add the line to previous line in | delimited text?

Hi All,

I am new to Unix and I have one challenge and below are the details.
I have pipe delimited text file in that data has span into multiple lines instead of single line.
Sample data.
Data should be like below for entire file.

Code:
41|216|398555|77|provided complete NP outcome data           constituted

But data in few lines like below.

Code:
72|192|402632|580|Completed OHTS Phase 2
, through 
March

I need to keep the data in single line like above and remove the spaces.
I have fixed length number in 3rd column of the data file.
Could you please help me on this to fix this issue.

Thanks,
Narasimha

Moderator's Comments:
Mod Comment Moved => Shell Programming and Scripting

Last edited by Scrutinizer; 07-07-2016 at 05:58 AM.. Reason: code tags
# 2  
Old 07-07-2016
Hi, please post in the proper forum.

Try:
Code:
awk '/[|]/{if(NR>1)print p; $1=$1; p=$0; next}{$1=$1; p=p FS $0} END{if(NR)print p}' file

$1=$1 is used to remove excess spaces
# 3  
Old 07-07-2016
Thanks for your help Scrutinizer,

This command not changing in the file and still for few lines i am seeing the issue.

Thanks,
Narasimha

---------- Post updated at 03:28 PM ---------- Previous update was at 03:08 PM ----------

Hi Scrutinizer,

OMG....

what a miracle you did it is working fine I used this command out put to another file like below.

Code:
awk '/[|]/{if(NR>1)print p;
 $1=$1; p=$0; next}{$1=$1; p=p FS $0}
 END{if(NR)print p}' test.txt > test_new.txt.

I will use this logic to all my files.

Thanks a Lot.

Thanks,
Narasimha

Moderator's Comments:
Mod Comment edit by bakunin: please use CODE-tags when posting code, data or output from a terminal. Thank you

Last edited by bakunin; 07-07-2016 at 07:58 AM..
# 4  
Old 07-07-2016
Hi Scrutinizer,

I have used this command for files and all most all files it works except the files which are ending with | "pipe line".attached screenshot for your reference.
Could you please help me on this.

Thanks,
Narasimha
How to add the line to previous line in | delimited text?-pipeline_errorpng
# 5  
Old 07-08-2016
Hi All,

Can we do like this?

First find the number of | pipe lines in the line, if the number of pipe lines are not correct then the line should be added to the previous line.

I used the below command to find the number of pipes in the line

Code:
awk -F "|" ' { print NF-1 } ' test.txt

but after I could not find the correct command if the number of pipes less than expect then needs to add this line to previous line.

Could you please help me.

Thanks,
Narasimha



Moderator's Comments:
Mod Comment Please use code tags as required by forum rules!

Last edited by RudiC; 07-08-2016 at 08:37 AM.. Reason: Added code tags.
# 6  
Old 07-08-2016
Try
Code:
awk '{printf "%s%s", NF==5?RS:"", $0} END {printf RS}' FS="|" file
41|216|398555|77|provided complete NP outcome data           constituted
72|192|402632|580|Completed OHTS Phase 2, through March


Last edited by RudiC; 07-08-2016 at 08:48 AM..
# 7  
Old 07-08-2016
Hi RudiC,

Thanks for your updates. I tried your command but it is merging all lines into single line.

My requirement is like below.

I have pipe delimited text file, in that data has span into multiple lines.

Sample data.
Data should be like below for all rows of the file.


Code:
Code:
41|216|398555|77|provided complete NP outcome data           constituted

But data in few lines like below.


Code:
Code:
72|192|402632|580|Completed OHTS Phase 2
,through 
March

Thanks,
Narasimha



Moderator's Comments:
Mod Comment No-Nonsense: Please use code tags as required by forum rules!

Last edited by RudiC; 07-08-2016 at 02:07 PM.. Reason: Added code tags again!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Add previous text when replacing comma with new line

Hi, I've got this output: # cat test2.txt TM1ITP1-TMNLSTP1 SLC00=0,SLC01=0,SLC02=0,SLC03=0 if I just use cat test2.txt | tr "," "\n" I'll end up very near to what I'm trying to achieve: TM1ITP1-TMNLSTP1 SLC00=0 SLC01=0 SLC02=0 SLC03=0 But how can i eventually add the term... (1 Reply)
Discussion started by: nms
1 Replies

2. Shell Programming and Scripting

Remove new line starting with a numeric value and append it to the previous line

Hi, i have a file with multiple entries. After some tests with sed i managed to get the file output as follows: lsn=X-LINK-IN0,apc=661:0,state=avail,avail/links=1/1, 00,2110597,2094790,0,81,529,75649011,56435363, lsn=TM1ITP1-AM1ITP1-LS,apc=500:0,state=avail,avail/links=1/1,... (5 Replies)
Discussion started by: nms
5 Replies

3. 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

4. Shell Programming and Scripting

How to add line to previous line if not a number?

Hi, I am trying to compare 2 lists. However, one of these lists has to be taken from a.pdf file. When I copy the test into a .txt document there are formatting errors which I need to correct. The document is long (~10,000 lines) so I need to script the re-formatting. Currently my file looks... (9 Replies)
Discussion started by: carlr
9 Replies

5. UNIX for Dummies Questions & Answers

How to change a line of text to a comma delimited string?

Hi, Is there a one-liner that I can use to change a line of text into a comma delimited string? For example, convert user1 user2 user3 user4to user1,user2,user3,user4Currently using while read x, although got the extra comma at the end that I have to remove manually. Please... (5 Replies)
Discussion started by: newbie_01
5 Replies

6. UNIX for Advanced & Expert Users

How to find a string in a line in UNIX file and delete that line and previous 3 lines ?

Hi , i have a file with data as below.This is same file. But actual file contains to many rows. i want to search for a string "Field 039 00" and delete that line and previous 3 lines in that file.. Can some body suggested me how can i do using either sed or awk command ? Field 004... (7 Replies)
Discussion started by: vadlamudy
7 Replies

7. UNIX for Dummies Questions & Answers

How to remove fields space and append next line to previous line.?

awk 'BEGIN{FS = "Ç"} NR == 1 {p = $0; next} NF > 1 {print p; p = $0} NF <= 1 {p = (p " " $0)} END {print p}' input.txt > output.txt This is what the input data file looks like with broken lines Code: 29863 Ç890000000 Ç543209911 ÇCHNGOHG Ç000000001 Ç055 ... (4 Replies)
Discussion started by: cumeh1624
4 Replies

8. Shell Programming and Scripting

Sed Comparing Parenthesized Values In Previous Line To Current Line

I am trying to delete lines in archived Apache httpd logs Each line has the pattern: <ip-address> - - <date-time> <document-request-URL> <http-response> <size-of-req'd-doc> <referring-document-URL> This pattern is shown in the example of 6 lines from the log in the code box below. These 6... (1 Reply)
Discussion started by: Proteomist
1 Replies

9. Shell Programming and Scripting

Delete line with match and previous line quoting/escaping problem

Hi folks, I've list of LDAP records in this format: cat cmmac.export.tmp2 dn: deviceId=0a92746a54tbmd34b05758900131136a506,ou=devices,ou=customer,ou=nl,o=upc cmmac: 00:13:11:36:a5:06 dn: deviceId=0a92746a62pbms4662299650015961cfa23,ou=devices,ou=customer,ou=nl,o=upc cmmac:... (4 Replies)
Discussion started by: tomas.polak
4 Replies

10. Shell Programming and Scripting

Search text from a file and print text and one previous line too

Hi, Please let me know how to find text and print text and its previous line. Please don't get irritated few days back I asked text and next line. I am using HP-UX 11.11 Thanks for your help. (6 Replies)
Discussion started by: kamranjalal
6 Replies
Login or Register to Ask a Question