Philip Hands wrote: >> Kevin Dalley wrote, referring to Bug#18118: >> >It would be nice if postgresql upgrade would remove the lines from >> >/etc/crontab which were added by previous version of postgresql. >> >> For a while, it did. Nevertheless, it is a violation of policy to >> modify /etc/crontab, which is why I have taken it out. >> >> Should I reinstate the removal? It would add these lines to postinst: >>... >sed seems like a simpler way of doing this than awk:
Ah well, in Unix there's always more than one way to do it; I like awk! I can also think of a way to do it with a mixture of grep, cut, head and tail! How about a Perl contribution, anyone? We could put the whole lot into a little note on inventive ways to use basic commands. > > sed -e '/^#-- postgresql begin /,/^#-- postgresql end /d' \ > /etc/crontab > $TMP I hadn't thought of this way of using sed to deal with a block; I presume that the patterns make the command equivalent to (say) 10,12d >BTW Is it worth worrying about broken files ? Either method will delete >to the end of the file if the end comment is missing -- does this matter ? I'd prefer not to risk breaking anything; so, with awk: if grep -qs '^#-- postgresql begin *$' /etc/crontab then TMP=`mktemp /tmp/pg.XXXXXX` || exit 1 awk 'BEGIN {found=0} /^#-- postgresql begin *$/ {found = 1} /^#-- postgresql end *$/ {found = -1} {if (!found) print} {if (found == -1) found=0} END {if (found) exit 1}' /etc/crontab >$TMP && if [ -f $TMP ] then mv $TMP /etc/crontab fi fi This will not delete anything unless the whole block is found. -- Oliver Elphick [EMAIL PROTECTED] Isle of Wight http://www.lfix.co.uk/oliver PGP key from public servers; key ID 32B8FAA1 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]