I quite often need to remove a single line from a file by its line number. The most common use case for me is the known_hosts file when I have reinstalled a system, I have in the past used vim and navigated to the line then removed it. This is all well and good but it gets to be a pain having to do it repeatedly, especially when you manage around 1000 servers and the get rebuilt frequently. Finally today I had had enough so wrote a little script to do this task easily. Hopefully someone else finds this useful
Its usage is : delline LINE FILE
#!/bin/bash
LINE=$1
FILE=$2
if [ ! -f $FILE ] ; then
echo "can't read $FILE: No such file or directory"
exit 1
fi
if [ `expr $LINE + 1 2> /dev/null` ] ; then
sed -i "${LINE}d" $FILE
else
echo $LINE is not numeric
exit 1
fi