Combining two lines into one, UNIX


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Combining two lines into one, UNIX
# 8  
Old 10-22-2015
Code:
sed -n -r '/<Member/{N; s/<(Member)[[:space:]]+([[:alpha:]\.]+)[[:punct:]]+([[:alpha:]\.]+)[[:punct:]]\n([[:alpha:]\.]+)[[:punct:]]+(.*)[[:punct:]].*$/\1 \2,\3,\4,\5 /p}' file

Code:
sed -n -r '/<Member/{N; s/<(Member).*(name)="(.*)"\n(.*)="(.*)".*$/\1 \2,\3,\4,\5 /p}' file

The first one is tough to look at; I can follow along much more easily with the second.
Being a fairly simple data stream editor command, can't imagine a longer version that would make sense.

But I do like [: punct:] with it's large array of special characters.

I figure certain circumstances where the string sequence is difficult!? It would be appropriate in small doses.

Last edited by Don Cragun; 10-22-2015 at 04:35 PM.. Reason: Add missing ICODE tags.
# 9  
Old 10-22-2015
Quote:
Originally Posted by Klasform
... ... ...

But I do like [: punct:] with it's large array of special characters.

I figure certain circumstances where the string sequence is difficult!? It would be appropriate in small doses.
Note that there is a HUGE difference between [[:punct:]] and [: punct:]! The first one is a bracket expression that will match any single character in the character class punct (i.e., a punctuation character in the current locale). The second is a bracket expression that will match a single <space>, <colon>, <c>, <n>, <p>, <t>, or <u> character.
# 10  
Old 10-27-2015
Thanks Scrutinizer, This worked Smilie

I now have another set of lines

Code:
 <Member  name="ABC"
Consolidation="~"
DataStorage="DC"
Hierarchy="DB"
>
</Member>
<Member  name="000"
SharedMember="Y"
DataStorage="SD"
>
</Member>
<Member  name="20000"
DataStorage="ShareData"
>
</Member>
<Member  name="Total No_Org"
Consolidation="~"
DataStorage="DynamicCalc"
HierarchyType="Disabled"
>
</Member>
<Member  name="2000"
SharedMember="Y"
DataStorage="SD"
</Member>

based on the above code I need only Member name , followed by Datastorage . Eg

Code:
 Member name="ABC", DataStorage="DC"
Member name="000", DataStorage="SD"
.
.
 or
 ABC,DC
000,SD
.
.

Thanks again all, for your generous Help
# 11  
Old 10-27-2015
Hello Dev,

Could you please try following and let me know if this helps you.
Code:
 awk -F"[ |=]" '/<Member/{sub(/</,X,$0);A=$0} /DataStorage/{A=A?A OFS $0:$0} /<\/Member>/{print A;A=""}' OFS=", "  Input_file

Output will be as follows.
Code:
  Member  name="ABC", DataStorage="DC"
Member  name="000", DataStorage="SD"
Member  name="20000", DataStorage="ShareData"
Member  name="Total No_Org", DataStorage="DynamicCalc"

Not removing the space in first line as shown above in output as per your shown output to us, also this code not considering the sequence of the strings which we are searching for like <Member and DataStorage. Hope this helps.


Thanks,
R. Singh

Last edited by RavinderSingh13; 10-27-2015 at 09:48 AM..
# 12  
Old 10-28-2015
thanks for the reply Rakesh .. space at the start of the first line isn't needed .. Also below is what I get when I run your code

Code:
 awk: syntax error near line 1
awk: illegal statement near line 1
awk: syntax error near line 1
awk: illegal statement near line 1

---------- Post updated at 03:45 AM ---------- Previous update was at 03:30 AM ----------

sorry .. for the typo ..Ravinder
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Combining lines in to one line

Hi Friends, I have a file1.txt 1001 jkilo yrhfm 200056 jhdf rjhwjkrh 3+u8jk5h3 uru ehjk 1002 jkfhk hfjkd 2748395 fdjksfh hefjkh 3hdfk ejkh kjhjke In the above if you see the firt charcter of each line mentioned in red has a pattern . I need to create another file where , the... (6 Replies)
Discussion started by: i150371485
6 Replies

2. Shell Programming and Scripting

Reading two lines in a while loop and combining the lines

Dear all, I have a file like this: imput scaffold_0 1 scaffold_0 10000 scaffold_0 20000 scaffold_0 25000 scaffold_1 1 scaffold_1 10000 scaffold_1 20000 scaffold_1 23283 and I want the output like this: scaffold_0 1 scaffold_0 10000 scaffold_0 10000 scaffold_0 20000... (6 Replies)
Discussion started by: valente
6 Replies

3. Shell Programming and Scripting

Combining lines between two specific lines

Hi, I have a requirement like following: I have input file like: Question: 1 ----Multiple choice--- What is your favourite colour? Options: a) red b) blue c) none of these Question: 2 ---Multiple choice----- In which month did you join your first job? Options: a) Jan b) Feb c)... (11 Replies)
Discussion started by: ppatra
11 Replies

4. Shell Programming and Scripting

Combining many lines to one using awk or any unix cmd

Combining many lines to one using awk or any unix cmd Inputfile: Output : Appreciate help on this. (14 Replies)
Discussion started by: pinnacle
14 Replies

5. Shell Programming and Scripting

Combining two text lines into one

Here is the sample file: 646 STARTED Tue Dec 30 06:38:53 2008 Job DdCustXAddr_brad has been reset. 647 STARTED Tue Dec 30 06:38:54 2008 Starting Job DdCustXAddr_brad. (...) 704 STARTED Tue Dec 30 06:49:02 2008 Job DdCustXAddr_brad aborted. I want to combine every non-numbered line... (4 Replies)
Discussion started by: mfavero
4 Replies

6. Shell Programming and Scripting

searching thru or combining multiple lines in a unix file

This is the problem actually: This regex: egrep "low debug.*\".*\"" $dbDir/alarmNotification.log is looking for data between the two quotation marks: ".*\" When I hate data like this: low debug 2009/3/9 8:30:20.47 ICSNotificationAlarm Prodics01ics0003 IC... (0 Replies)
Discussion started by: ndedhia1
0 Replies

7. Shell Programming and Scripting

combining lines in files

hey, I want to combine every three lines in a file onto one i.e old file: 82 67 32 62 58 39 29 47 58 27 34 50 27 35 69 38 58 70 new file: 82 67 32 62 58 39 29 47 58 27 34 50 27 25 69 38 58 70 At the moment I am using the following code: gawk 'BEGIN {x=0} { if(x<3)... (14 Replies)
Discussion started by: sme
14 Replies

8. Shell Programming and Scripting

help combining lines in awk

I seem to have gotten myself in over my head on this one. I need help combining lines together. I have a text file containing 24,000 lines (exactly why I need awk) due to bad formatting it has separated the lines (ideally it should be 12,000 lines total). Example of file: ... (2 Replies)
Discussion started by: blueheed
2 Replies

9. Shell Programming and Scripting

need help appending lines/combining lines within a file...

Is there a way to combine two lines onto a single line...append the following line onto the previous line? I have the following file that contains some blank lines and some lines I would like to append to the previous line... current file: checking dsk c19t2d6 checking dsk c19t2d7 ... (2 Replies)
Discussion started by: mr_manny
2 Replies

10. Shell Programming and Scripting

Combining multiple lines

I am fairly new to scripting. But I have been able to extract and format all of my information required into one file. My issue is that one character is on a separate line. I need to be able to add the character to the previous line. ex. abcdefghi 1 bcdefghij 3 cdefghijk 4 need to... (4 Replies)
Discussion started by: DUST
4 Replies
Login or Register to Ask a Question