merge lines into single line based on symbol \t


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting merge lines into single line based on symbol \t
# 1  
Old 07-15-2009
merge lines into single line based on symbol \t

The symbols are \t and \t\t (note: not tab)
If the line starts with \t merge them into a single line upto symbol \t\t
\t\t to end and start new line

I able to join in a single line but not ending at \t\t and I completely confused
help would be appreciatedSmilieSmilie
Input
\ta tab XXXXXXXXXX
\te tab YYYYYYYYYYY
\t\t
\tc tab DDDDXXXXXX
\tz tab FFFFFFYYYYYYY

output
a tab XXXXXXXXXX tab e tab YYYYYYYYYYY
c tab DDDDXXXXXX tab z tab FFFFFFYYYYYYY
# 2  
Old 07-15-2009
Code:
#!/bin/ksh
savestr=""
# remove first \t, we don't need it
sed "s/^\\\t//" filename | while read line
do
       case "$line" in
               \t*) # \t\t line, so print buffer and empty buffer
                       echo "$savestr"
                       savestr=""
                       ;;
               *)     # not \t\t line, so add current line to the buffer
                       savestr="$savestr$line "
                   ;;
       esac
done
# last line
# if file not end \t\t line, then we have some data in buffer, print it
[ "$savestr" != "" ] && echo "$savestr"


Last edited by kshji; 07-15-2009 at 05:43 AM..
# 3  
Old 07-15-2009
Thanx alot
Working fine

---------- Post updated at 12:28 AM ---------- Previous update was at 12:20 AM ----------

Could you plz explain the code if posiible
Thanx
# 4  
Old 07-15-2009
Another way:
Code:
awk '/\\t\\t/{printf("\n");next}{gsub(/\\t/,"");print}END{printf("\n")}' ORS=" " filename

# 5  
Old 07-15-2009
And a pure sed version:

Code:
#  sed -e :a -e '$!N;s/\\\t\\\t//;s/\n\\\t/ /;s/\\\t/ /;ta' -e 'P;D' infile
 a tab XXXXXXXXXX e tab YYYYYYYYYYY
 c tab DDDDXXXXXX z tab FFFFFFYYYYYYY

# 6  
Old 07-15-2009
Another pure sed, a bit shorter
Code:
sed -n 'H; $ {g; s/\n//g; s/\\t\\t/\n/g; s/\\t//g; p; }' input_file


Last edited by tkleczek; 07-15-2009 at 10:45 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Merge multi-lines into one single line using shell script or Linux command

Hi, Can anyone help me for merge the following multi-line log which beginning with a " and line ending with ": into one line. *****Original Log***** 087;2008-12-06;084403;"mc;;SYHLR6AP1D\LNZW;AD-703;1;12475;SYHLR6AP1B;1.1.1.1;0000000062;HGPDI:MSISDN=12345678,APNID=1,EQOSID=365;... (3 Replies)
Discussion started by: rajeshlinux2010
3 Replies

2. Shell Programming and Scripting

Merge multiple lines into a single line

Hi all, I'm relatively new to scripting, I can do pretty basic things. I have a daily log file that looks like: timestamp=2017-06-28-01.01.35.080576; event status=0; userid=user1; authid=user1; application id=10.10.10.10.11111.12345678901; application name=GUI; ... (29 Replies)
Discussion started by: dwdnet
29 Replies

3. UNIX for Beginners Questions & Answers

Merging multiple lines into single line based on one column

I Want to merge multiple lines based on the 1st field and keep into single record. SRC File: AAA_POC_DB.TAB1 AAA_POC_DB.TAB2 AAA_POC_DB.TAB3 AAA_POC_DB.TAB4 BBB_POC_DB.TAB1 BBB_POC_DB.TAB2 CCC_POC_DB.TAB6 OUTPUT ----------------- 'AAA_POC_DB','TAB1','TAB2','TAB3','TAB4'... (10 Replies)
Discussion started by: raju2016
10 Replies

4. Shell Programming and Scripting

Returning multiple outputs of a single line based on previous repeated lines

Hello, I am trying to return a time multiple times from a file that has varying output just before the time instance, i.e. cat jumped cat jumped cat jumped time = 1.1 cat jumped cat jumped time = 1.2 cat jumped cat jumped time = 1.3 In this case i would like to output a time.txt... (6 Replies)
Discussion started by: ryddner
6 Replies

5. Shell Programming and Scripting

Merge two non-consecutive lines based on line number or string

This is a variation of an earlier post found here: unixcom/shell-programming-scripting/159821-merge-two-non-consecutive-lines.html User Bartus11 was kind enough to solve that example. Previously, I needed help combining two lines that are non-consecutive in a file. Now I need to do the... (7 Replies)
Discussion started by: munkee
7 Replies

6. Shell Programming and Scripting

Multi line document to single lines based on occurance of string

Hi Guys, I am new to awk and sed, i am working multiline document, i want to make make that document into SINGLE lines based on occurace of string "dwh". here's the sample of my problem.. dwh123 2563 4562 4236 1236 78956 12394 4552 dwh192 2656 46536 231326 65652 6565 23262 16625623... (5 Replies)
Discussion started by: victor369
5 Replies

7. UNIX for Advanced & Expert Users

Merge a group of lines into single line

Hi Everybody, Below are the contents of the a text file .., SN = 8 MSI = 405027002277133 IKVALUE = DE6AA6A11D42B69DF6398D44B17BC6F2 K4SNO = 2 CARDTYPE = SIM ALG = COMP128_3 SN = 8 MSI = 405027002546734 IKVALUE = 1D9F8BAA73973D8FBF8CBFB01436D822 K4SNO = 2 CARDTYPE = SIM ALG =... (8 Replies)
Discussion started by: prasanth_babu
8 Replies

8. Shell Programming and Scripting

Help on Merge multi-lines into one single line

Hello, Can anyone let me know how to use Perl script to Merge following multi-lines into one single line... ***** Multi-line***** FILE_Write root OK Tue Jul 01 00:00:00 2008 cl_get_path file descriptor = 1 FILE_Write root OK ... (5 Replies)
Discussion started by: happyday
5 Replies

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

10. Shell Programming and Scripting

Merge multi-lines into one single line

Hi, Can anyone help me for merge the following multi-line log which beginning with a number and time: into one line. For each line need to delete the return and add a space. Please see the red color line. *****Original Log*****... (4 Replies)
Discussion started by: happyday
4 Replies
Login or Register to Ask a Question