sed: working with multiple lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed: working with multiple lines
# 1  
Old 11-13-2007
Java sed: working with multiple lines

Got another sed question Smilie

My text block is
Quote:
10002,9:12/123456789
10002,10:1
10002,11:1
10004,9:12/123456789
10004,10:1
I need to do the following:
If (and only if) the line starting with 10002,11 is followed by a line starting with 10004,9 , insert the line 10003,9 between the 2

Thus, my output should be
Quote:
10002,9:12/123456789
10002,10:1
10002,11:1
10003,9
10004,9:12/123456789
10004,10:1
I tried
Quote:
sed '
/^10002,11/ {
N
/\n.*10004/ a\
10003,9:1
}'
but this gives me
Quote:
10002,9:12/123456789
10002,10:1
10002,11:1
10004,9:12/123456789
10003,9
10004,10:1
(the order is not as i wanted it)

What am I doing wrong?

Thanks once again!
# 2  
Old 11-13-2007
Code:
sed '/^10002,11/{N;s/\n10004,9/\
10003,9&/;}' filename

There is an escaped new line after the pattern "\n10004,9".

Code:
awk 'x&&/^10004,9/{$0=y RS$0}
{x=(/^10002,11/)?1:0}1' y="10003,9" filename

Use nawk or /usr/xpg4/bin/awk on Solaris.
# 3  
Old 11-14-2007
awk

Hi Guy,

You can use awk to realize it.
in:
Code:
10002,9:12/123456789
10002,10:1
10002,11:1
10004,9:12/123456789
10004,10:1 
10002,9:12/123456789
10002,10:2
10002,11:2
10004,9:12/123456789
10004,10:2

out:
Code:
10002,9:12/123456789
10002,10:1
10002,11:1
10003,9
10004,9:12/123456789
10004,10:1
10002,9:12/123456789
10002,10:2
10002,11:2
10003,9
10004,9:12/123456789
10004,10:2

code:
Code:
awk'
BEGIN { FS=":"}
{
if ($1=="10002,11")
var=$0
else if ($1=="10004,9")
{
	var=sprintf("%s\n10003,9\n%s",var,$0)
	print var
}
else
print
}' a

# 4  
Old 11-14-2007
Quote:
Originally Posted by radoulov
Code:
sed '/^10002,11/{N;s/\n10004,9/\
10003,9&/;}' filename

There is an escaped new line after the pattern "\n10004,9".
How silly!

thanks for the correct solution!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Use sed commands on multiple lines

I have a text file and i want to run 3 sed commands for the lines entered by the user using perl script. I am doing this manually till now. need some help with this The sed commands I have to use are : sed -i "s/{+//" error.txt sed -i "s/+}//" error.txt sed -i "s/\//g" error.txt... (5 Replies)
Discussion started by: utkarshkhanna44
5 Replies

2. Shell Programming and Scripting

sed hash in multiple lines

Hi everybody, I am writing a little script to manage keystores and need some help with sed. The output of the keystore file is like: vi 2, Dec 7, 2012, trustedCertEntry, Certificate fingerprint (MD5): F9:1F:FE:E6:A3:CB:99:88:44:D4:67:ED:G5:F8:97:7A system@remote-server, Dec 17, 2013,... (13 Replies)
Discussion started by: Hamss
13 Replies

3. Shell Programming and Scripting

Replace multiple lines through sed

Hi All, I have a input file as sample below <this is not starting of file> record line1 line2 line3 end line4 line5 record line6 line7 line8 my requirement is this, i want to select a pattern between first record and end, whatever is written between first record and end. and... (0 Replies)
Discussion started by: adgangwar
0 Replies

4. Shell Programming and Scripting

How to use SED to join multiple lines?

Hi guys, anyone know how can i join multiples lines using sed till the end of a file and output to another file in a single line? The end of each line will be replaced with a special char "#". I am using the below SED command, however it seems to remove the last 2 lines. Also not all lines... (12 Replies)
Discussion started by: DrivesMeCrazy
12 Replies

5. Shell Programming and Scripting

Replace multiple lines between tags using sed

I have a file example.txt with content look like this: <TAG> 1 2 3 </TAG> and I use a sed command to replace everything between <TAG></TAG> as below: sed -e 's/\(<TAG>\)*\(<.*\)/something/g' example.txt > example.txt.new But unfortunately, the command failed to replace as i want, it... (23 Replies)
Discussion started by: dollylamb
23 Replies

6. Shell Programming and Scripting

Sed: Combining Multiple Lines into one

Before I ask my actual question, is it going to be a problem that I want to run this process on a 15 Gig file that is ~140 million rows? What I'm trying to do: I have a file that looks like Color,Type,Count,Day Yellow,Full 5 Tuesday Green,Half 6 Wednesday Purple,Half 8 Tuesday ...... (3 Replies)
Discussion started by: goldfish
3 Replies

7. Shell Programming and Scripting

sed substitution and multiple lines

I have a file names 'log.txt' that looks something like this: #This is a comment /sbin/iptables -A INPUT -p tcp -s ip.of.a machine --destination-port 21 -j ACCEPT #This is the comment to read# /sbin/iptables -A INPUT -p tcp -s ip.of.a.machine --destination-port 21 -j ACCEPT I would like... (1 Reply)
Discussion started by: manouche
1 Replies

8. Shell Programming and Scripting

Use sed to merge multiple lines

Hi all: I have a file in which the contents are as following: ... This is a test ONE TWO Hello, world! XXX YYY CCC test again three, four five six seven world AAA BBB QQQ test eight, nine world (3 Replies)
Discussion started by: xb88
3 Replies

9. Shell Programming and Scripting

Delete multiple lines w/ sed

Hi all, I am trying to figure out the syntx to delete multiple lines w/ sed. I know the following syntax will delete lines 1 THROUGH 5 from filex: sed 1,5d filex But I wan to delete lines 1 AND 5 (keeping lines 2,3, and 4). Does anyone know how to do this in a single sed statement? ... (2 Replies)
Discussion started by: bookoo
2 Replies

10. Shell Programming and Scripting

Deleting Multiple Lines with sed

I am trying to use sed to delete multiple lines in a file. The problem is that I need to search for a certain line and then once found delete it plus the next 4 lines. For instance if I had a file that consisted of the following lines: #Data1.start ( (Database= data1) (Name = IPC)... (1 Reply)
Discussion started by: rambo15
1 Replies
Login or Register to Ask a Question