how to read multi line characters in a single column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to read multi line characters in a single column
# 1  
Old 02-22-2012
Bug how to read multi line characters in a single column

Hi,
I have file in which fields are pipe (|) separated and the record separator is new line (\n). But sometime I am getting a field value which is spread across multiple line. Basically I am getting a file from another system in the below format and needs to process the file and load data into a db using an ETL tool.

For Example:
Code:
Id | Company Name | Address | City | Country        <--- Header

Actual Data:
Code:
001| MS | ABC PVT LTD, A
 BLOCK, PARK
 STREET | Bangalore | India

Code:
002| IBM | XYZ LTD, TR STREET | NJ | USA


The expected output should be :
Code:
001| MS | ABC PVT LTD, A  BLOCK, PARK STREET | Bangalore | India
002| IBM | XYZ LTD, TR STREET | NJ | USA



Can someone help me out to get the result of the 1st line in 1 liner as mentioned above.

Thanks in Advance.
SmilieSatya

Last edited by Franklin52; 02-23-2012 at 04:26 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Old 02-22-2012
Hi,
Try this,
Code:
awk 'BEGIN{FS="|";ORS="";}{if($1 ~ /^00/ && NR != 1){print "\n"$0;}else{print $0;}}' file

Cheers,
Ranga:-)
# 3  
Old 02-22-2012
Bug

Thanks Ranga for your reply. Now its formatting is working correctly. Could you please explain a little bit for each steps how its doing??
# 4  
Old 02-23-2012
awk

Hi,

Code:
awk 'BEGIN{FS="|";ORS="";}{if($1 ~ /^00/ && NR != 1){print "\n"$0;}else{print $0;}}' file
 
Here FS is input field separator. It will split the input line based on separator and store the columns in $1,$2 and so on.
 
ORS is an Output Record separator. By default ORS="\n". If you use print function, that will append ORS. 
so i dont want to append "\n" since i have to append more than one line.
 
As you know $1 is a first column and i am checking that $1 starts with 00 then 
i am creating a new line and i am printing that current line($0 has whole line).
 
In if condition, i have included one more condition that NR != 1. NR give you the line number. 
Here i dont want to create new line for the first line.

Cheers,
RangaSmilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi line log files to single line format

I want to read the log file which was generate from other command . And the output was having multi line in log files for job name and server name. But i need to make all the logs on one line Source file 07/15/2018 17:02:00 TRANSLOG_1700 Server0005_SQL ... (2 Replies)
Discussion started by: ranjancom2000
2 Replies

2. Shell Programming and Scripting

Help with reformat single-line multi-fasta into multi-line multi-fasta

Input File: >Seq1 ASDADAFASFASFADGSDGFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSD >Seq2 SDASDAQEQWEQeqAdfaasd >Seq3 ASDSALGHIUDFJANCAGPATHLACJHPAUTYNJKG ...... Desired Output File >Seq1 ASDADAFASF ASFADGSDGF SDFSDFSDFS DFSDFSDFSD FSDFSDFSDF SD >Seq2 (4 Replies)
Discussion started by: patrick87
4 Replies

3. UNIX for Dummies Questions & Answers

Remove multi line and single line comments

Hi, I am trying to remove multi line and single line comments like examples below I have tried this pattern. it works fine for single line comments and multi line comments in a single line only. but this fails when the comments are extended in multiple lines as shown in the comment 2 of... (3 Replies)
Discussion started by: ahmedwaseem2000
3 Replies

4. UNIX for Dummies Questions & Answers

Characters in a single read

Hi, I have the file which has the data : accctaaccctaaccctaaccctaaccctaaccctaaccctaaccctaac cctaacccaaccctaaccctaaccctaaccctaaccctaaccctaacccc taaccctaaccctaaccctaaccctaacctaaccctaaccctaaccctaa ccctaaccctaaccctaaccctaaccctaacccctaaccctaaccctaaa... (24 Replies)
Discussion started by: rajivn786
24 Replies

5. Shell Programming and Scripting

Joining multi-line output to a single line in a group

Hi, My Oracle query is returing below o/p ---------------------------------------------------------- Ins trnas value a lkp1 x a lkp1 y b lkp1 a b lkp2 x b lkp2 y ... (7 Replies)
Discussion started by: gvk25
7 Replies

6. Shell Programming and Scripting

Multi lines to single line

HI, My input file contains the data as like below: A1234119993 B6271113 Bghjkjk A1234119992 B6271113hi Bghjkjkmkl the output i require is : A1234119993 B6271113 Bghjkjk A1234119992 B6271113hi Bghjkjkmkl Please help me in this. Thanks (6 Replies)
Discussion started by: pandeesh
6 Replies

7. Shell Programming and Scripting

Merge multi-line output into a single line

Hello I did do a search and the past threads doesn't really solve my issue. (using various awk commands) I need to combine the output from java -version into 1 line, but I am having difficulties. When you exec java -version, you get: java version "1.5.0_06" Java(TM) 2 Runtime... (5 Replies)
Discussion started by: flagman5
5 Replies

8. Shell Programming and Scripting

Read duplicate column, then generate a single line

Dear experts, How to generate the result listed below ? Input file: col1col2col3Aname1size1Aname2size2Aname3size1Bname4size3Bname5size5Cname6size8Cname7size6Cname8size9Cname9size11Cname10size16 What I want is: Aname1, size1name2, size2name3, size1Bname4,size3name5, size5Cname6,... (1 Reply)
Discussion started by: tojzz
1 Replies

9. Shell Programming and Scripting

How to use Perl to join multi-line into single line

Hello, Did anyone know how to write a perl script to merge the multi-line into a single line where each line with start at timestamp Input--> timestamp=2009-11-10-04.55.20.829347; a; b; c; timestamp=2009-11-10-04.55.20.829347; aa; bb; cc; (5 Replies)
Discussion started by: happyday
5 Replies

10. Shell Programming and Scripting

How to use Perl to merge multi-line into single line

Hi, Can anyone know how to use perl to merge the following multi-line information which beginning with "BAM" into one line. For each line need to delete the return and add a space. Please see the red color line. ******Org. Multi-line) BAM admin 101.203.57.22 ... (3 Replies)
Discussion started by: happyday
3 Replies
Login or Register to Ask a Question