Я знаю, что Ваш вопрос указывает использование vi
или vim
но вот несколько других опций для того, чтобы сделать это, не имея необходимость вручную открывать файл:
Perl
perl -ne 'if($. <=8 && $. >= 6){s/^\s*#//;}print' foo.sh
Версия Perl> =5.10
perl -ne '$. ~~ [6..8] && s/^\s*#//;print' foo.sh
Это распечатает содержание файла, можно или перенаправить другому (> new_file.sh
) или используйте i
отредактировать файл на месте:
perl -i -ne '$. ~~ [6..8] && s/^\s*#//;print' foo.sh
sed
sed '6,8 s/^ *#//' foo.sh
Снова, для создания этого редактирования исходным файлом на месте использовать i
:
sed -i '6,8 s/^ *#//' foo.sh
awk
/gawk
и т.д.:
gawk '(NR<=8 && NR>= 6){sub("^ *#","")}{print}' foo.sh
Чистый bash
:
c=1; while read line; do
if [ $c -ge 6 ] && [ $c -le 8 ]; then
echo "${line/\#/}"
else
echo $line
fi
let c++; done < foo.sh
ifconfig_em0_name="eth0"
к вашему rc.conf должен выполнить этот трюк. Но это, вероятно, только усложнит задачу другим пользователям FreeBSD.[119892].
Я собрал сценарий для присвоения имен на основе MAC, который должен делать то, что вы хотите: https://github.com/eborisch/ethname