Swapping three lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Swapping three lines
# 1  
Old 09-20-2010
Swapping three lines

I have some text:
Code:
  <date>some_date</date>
  <text>some_text</text>
    <name>some_name<name>

and I want to transform it to smthng like that:
Code:
some_name on some_date: some_text

I've tried sed:
Code:
sed 's/<text>\(.*\)<\/text>
<name>\(.*\)<\/name>/\2 - \1/'

but it says unterminated substitute pattern, and I can't understand why... Smilie


so, I would be very grateful if someone could point me to the right direction Smilie.

thank you.
# 2  
Old 09-20-2010
Code:
perl -ln0e '/<date>(.+?)<\/date>.*?<text>(.+?)<\/text>.*?<name>(.+?)<\/name>/s;print "$3 on $1: $2"' file

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 09-20-2010
thanks! but now it only changes the first array of data, operates with the first three lines (and I have a lot of all those <date></date><text></text><name></name>).

so, I wonder, how to make it to operate with the whole input, is there some kind of global switch?
# 4  
Old 09-20-2010
Code:
perl -ln0e 'while(/<date>(.+?)<\/date>.*?<text>(.+?)<\/text>.*?<name>(.+?)<\/name>/sg){print "$3 on $1: $2"}' file

# 5  
Old 09-20-2010
great, thank you!

now I've just should figure for myself what all those mysterious perl switches do Smilie.
# 6  
Old 09-20-2010
Quote:
Originally Posted by dsjkvf

but it says unterminated substitute pattern, and I can't understand why... Smilie

so, I would be very grateful if someone could point me to the right direction Smilie.
.
This is because you spread the command over two lines and you cannot do that like this.. Also, this command would not work since sed is line based, you would have to join the next lines with the N command, e.g.:
Code:
sed '/<date>/{N;N;s|.*<date>\(.*\)</date>.*<text>\(.*\)</text>.*<name>\(.*\)</name>.*|\3 on \1: \2|}' infile

output:
Code:
some_name on some_date: some_text

This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 09-20-2010
Quote:
Originally Posted by Scrutinizer
This is because you spread the command over two lines and you cannot do that like this.
but I can split the substitute pattern over two lines with sed. e.g.:
Code:
sed 's/\([0-9A-Za-z]\),\([0-9A-Za-z]\)/\1 \
\2/g'

so, I probably cannot split search pattern, that's why I saw that error?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Swapping lines

Hi there, I have a text that I'm trying to format into something more readable. However, I'm stuck in the last step. I've searched and tried things over the internet with no avail. OS: Mac After parsing the original text that I won't put here, I managed to get something like this, but this... (8 Replies)
Discussion started by: Kibou
8 Replies

2. Solaris

Swapping

Hi Guys I am using SPARC-T4 (chipid 0, clock 2998 MHz), SunOS 5.10 Generic_150400-38 sun4v. How do I see if the server was doing some swapping like yesterday? I had a java application error with java.lang.OutOfMemoryError, now I want to check if the server was not doing some swapping at... (4 Replies)
Discussion started by: Phuti
4 Replies

3. Shell Programming and Scripting

Swapping the 1st 4 lines only

How can you swap the first 4 line only, the rest will stay the same. thanks #!/bin/sh line=4 awk -v var="$line" 'NR==var { s=$0 getline;s=$0"\n"s getline;print;print s next }1' fileko.tx . desired output: (8 Replies)
Discussion started by: invinzin21
8 Replies

4. Shell Programming and Scripting

Swapping fields

Hallo Team, This is the command that i am running : grep ",Call Forward Not Reachable" *2013* this is the output that i am getting (i did a head -10 but the files can be more than 1000) ... (8 Replies)
Discussion started by: kekanap
8 Replies

5. Shell Programming and Scripting

AWK swapping fields on different lines

Hi All, Sorry if this question has been posted elsewhere, but I'm hoping someone can help me! Bit of an AWK newbie here, but I'm learning (slowly!) I'm trying to cobble a script together that will save me time (is there any other kind?), to swap two fields (one containing whitespace), with... (5 Replies)
Discussion started by: Bravestarr
5 Replies

6. Shell Programming and Scripting

swapping lines that match a condition using sed, perl or the like

I'm a bit new to regex and sed/perl stuff, so I would like to ask for some advice. I have tried several variations of scripts I've found on the net, but can't seem to get them to work out just right. I have a file with the following information... # Host 1 host 45583 { filename... (4 Replies)
Discussion started by: TheBigAmbulance
4 Replies

7. Shell Programming and Scripting

Swapping lines beginning with certain words using sed/awk

I have a large file which reads like this: fixed-address 192.168.6.6 { hardware ethernet 00:22:64:5b:db:b1; host X; } fixed-address 192.168.6.7 { hardware ethernet 00:22:64:5b:db:b3; host Y; } fixed-address 192.168.6.8 { hardware ethernet 00:22:64:5b:db:b4; host A; }... (4 Replies)
Discussion started by: ksk
4 Replies

8. Shell Programming and Scripting

Swapping or switching 2 lines using sed

I made a script that can swap info on two lines using a combination of awk and sed, but was hoping to consolidate the script to make it run faster. If found this script, but can't seem to get it to work in a bash shell. I keep getting the error "Too many {'s". Any help here would be appreciated:... (38 Replies)
Discussion started by: LaTortuga
38 Replies

9. SuSE

Swapping

Hello! Why does my SuSE GNU/Linux machine swap? I have a Gig of ram, currently 14MBs of free RAM, 724MB - buffers and caches... That is 685MB of cached RAM, then kernel really should'nt have to swap, It should release cached memory in my thinkin... It has only swaped 3MB's but still,... (3 Replies)
Discussion started by: Esaia
3 Replies

10. UNIX for Dummies Questions & Answers

Swapping questions

How can you tell how much a Solaris box is swapping? At what point do page in and page out become a problem? Here is a vmstat output. > vmstat procs memory page disk faults cpu r b w swap free re mf pi po fr de sr m0 m1 m2 m3 in sy cs us sy id... (1 Reply)
Discussion started by: 98_1LE
1 Replies
Login or Register to Ask a Question