SED delete only first line command - Help need


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting SED delete only first line command - Help need
# 1  
Old 07-30-2010
Error SED delete only first line command - Help need

Can any one help me how the sed delete only first line command (D) works.
Code:
sed -f sedcmds File.txt

In this how the sed delete only first line command (D) works to delete the blank lines appearing more than ones leaving only one blank and deleting others blanks.
While doing step by step when two blank line appended in the pattern space, according to D command one blank is deleted in the pattern space leaving second one alone.
My question is what will happen to the remaining blank space, whether it will send as output immediately by clearing pattern space or append next pattern to that blank space???. After this how the next loop will start?
Can u explain this detailly... coz I couldn't able to find the detailed explanation for sed's D delete command in net.

sedcmds
Code:
/^$/{
       N
       /^\n$/D
       }

File.txt
Code:
This is line1

This is line2


this is line3




This is line4.

Moderator's Comments:
Mod Comment Having 14 posts in this forum, you should be familiar with using code tags.

Last edited by zaxxon; 07-30-2010 at 05:11 AM..
# 2  
Old 07-31-2010
The sed man page is pretty clear about the function of the D command which says that the D command will cause the next cycle to start, but will prevent the reading of the next input line if the pattern space is not empty.

Thus, the way your programme works can be explained with a bit of pseudo code:

Code:
while not at end of file 
do
   if pattern space is an empty line  (/^$/)
   then
       read next line and append to pattern space (N)
       if pattern space is two empty lines   (/^\n$)
       then
           delete to the first newline  (D)
           goto loop (leaves a single empty line in the pattern space)
       end
   end

   print pattern space
   read next line

:loop
done

So, as sed encounters blank lines, it 'buffers' one of them in the pattern space until the pattern space contains a blank line followed by a line that is more than just a newline.

Hope this makes sense.
# 3  
Old 07-31-2010
Try:
Code:
sed ':a;N;s/\n$//;ta' infile

or
Code:
sed -e :a -e 'N;s/\n$//;ta' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to delete line from file using sed command?

hello Team, I want to delete below linux using sed command but I am getting error.sed -i '/url=/status.cgi?hostgroup=/d' 3 error:sed: -e expression #1, char 32: unknown option to `s' Could you please help me with correct syntax. My line contain / character because of that I am getting... (4 Replies)
Discussion started by: ghpradeep
4 Replies

2. Shell Programming and Scripting

Sed. Delete line before and after pattern.

Hi. In need to delete line before and after pattern in file. I came to following commands. Delete line before sed -ni '/pattern/{x;d;};1h;1!{x;p;};${x;p;}' /etc/testfile Delete line after sed -i '/pattern/{N;s/\n.*//;}' /etc/testfile Is it possible to merge it in single command? (3 Replies)
Discussion started by: urello
3 Replies

3. Shell Programming and Scripting

sed command to grep multiple pattern present in single line and delete that line

here is what i want to achieve.. i have a file with below contents cat fileName blah blah blah . .DROP this REJECT that . --sport 7800 -j REJECT --reject-with icmp-port-unreachable --dport 7800 -j REJECT --reject-with icmp-port-unreachable . . . more blah blah blah --dport 3306... (14 Replies)
Discussion started by: vivek d r
14 Replies

4. Shell Programming and Scripting

sed command to delete everything after > on line

I have a large data file that I need to edit. There are lines like, > <IDNUMBER> (ST000002) > <SUPPLIER> (ST000002) > <IDNUMBER> (ST000004) > <SUPPLIER> (ST000004) and I need to delete everything after the >, excepting the end of line. > <IDNUMBER> > <SUPPLIER> > <IDNUMBER> > ... (4 Replies)
Discussion started by: LMHmedchem
4 Replies

5. Shell Programming and Scripting

delete the line with a particular string in a file using sed command.

Hello, I want to delete all lines with given string in file1 and the string val is dynamic. Can this be done using sed command. Sample: vars="test twinning yellow" for i in $vars do grep $i file1 if then echo "Do Nothing" else sed `/$i/d` file1 fi done Using the above... (5 Replies)
Discussion started by: PrasadAruna
5 Replies

6. Shell Programming and Scripting

sed command to delete line

HI, Im using the below commmand to delete lines having "(" at the start of a line. sed -e '/^(/d' But i need a command to delete lines that has only "(" in it and no other strings. infile - asdf asdf ( asdf ( asd outfile (1 Reply)
Discussion started by: dvah
1 Replies

7. Shell Programming and Scripting

Delete a line between selected lines using sed or any other command

I want to delete a line between selected lines using sed: e.g. : Between "bus" to "pins", delete lines conaining "signal" word. Input : bus direction signal new signal old pins signal ok end Desired Output: bus direction pins signal end (4 Replies)
Discussion started by: nehashine
4 Replies

8. Shell Programming and Scripting

Sed or Grep to delete line containing patter plus extra line

I'm new to using sed and grep commands, but have found them extremely useful. However I am having a hard time figuring this one out: Delete every line containing the word CEN and the next line as well. ie. test.txt blue 324 CEN green red blue 324 CEN green red blue to produce:... (2 Replies)
Discussion started by: rocketman88
2 Replies

9. Shell Programming and Scripting

USING sed to delete a line

Please let me know wat would be sed command to delete any partcular line from a file and also moving lines below it to up. ie wen line #9 is deleted data in line #10 should move to #9 and so on. (2 Replies)
Discussion started by: fidelis
2 Replies

10. Shell Programming and Scripting

sed: delete regex line and next line if blank

Hi, I want to write a sed script which from batiato: batiato/giubbe: pip_b.2.txt pip_b.3.txt pip_b.3mmm.txt bennato: bennato/peterpan: 123.txt consoli: pip_a.12.txt daniele: (2 Replies)
Discussion started by: one71
2 Replies
Login or Register to Ask a Question