[OFF] sed equivalent of something easy in python

Jussi Piitulainen jpiitula at ling.helsinki.fi
Wed Oct 27 16:04:59 CEST 2010

Daniel Fetchinson writes:

> This question is really about sed not python, hence it's totally
> off.  But since lots of unix heads are frequenting this list I
> thought I'd try my luck nevertheless.
> using python. The pattern is that the first line is deleted, then 2
> lines are kept, 3 lines are deleted, 2 lines are kept, 3 lines are
> deleted, etc, etc.
> But I couldn't find a way to do this with sed and since the whole
> operation is currently done with a bash script I'd hate to move to
> python just to do this simple task.
> What would be the sed equivalent?

The following appears to work here. Both parts of the address are
documented as GNU extensions in the man page: 2~5 matches line 2 and
then every 5th line, and ,+1 tells sed to match also the 1 line after
each match. With -n, do not print by default, and p is the command to
print when an address matches.

sed -n '2~5,+1 p'

Tried with GNU sed version 4.1.2, never used sed this way before.

So, is there some simple expression in Python for this? Just asking
out of curiosity when nothing comes to mind, not implying that there
should be or that Python should be changed in any way.

More information about the Python-list mailing list