tags:

views:

1127

answers:

3

You can specify a range of lines to operate on. For example, to operate on all lines, (which is of course the default):

sed -e "1,$ s/a/b/"

But I need to operate on all but the last line. You apparently can't use arithmetic expressions:

sed -e "1,$-1 s/a/b/"

(I am using cygwin in this case, if it make a difference)

+1  A: 

Well, you could hack it with something like this:

sed -e "1,$(($(cat the-file | wc -l) - 1))s/a/b/"

Or, you could use tail instead:

(tail +1 the-file) | sed -e s/a/b/; tail -1 the-file
Adam Rosenfield
+1 for unix legos
Chris Noe
+8  A: 
sed -e "$ ! s/a/b/"

This will match every line but the last. Confirmed with a quick test!

AdamC
+1  A: 

This command works, too

sed '$d'
furtelwart