Зачем использовать sed или awk, если вы уже обрабатываете файл построчно в оболочке? Что-то вроде этого будет работать без использования кучи других программ.
[[ $line =~ '^[[:space:]]' ]] || indent=0
if [[ $line =~ ^someconfig.* || $indent ]]
then
echo -n "#"
indent=1
fi
echo "$line"
Отправить вывод цикла во временный файл, а затем mv
как в (тоже очень хорошо )ответ awk:
done <$file >$file.tmp && mv $file.tmp $file
Обычно я предпочитаю, чтобы переименование было связано с &&, чтобы этого не произошло в случае сбоя команды. Кроме того, извините за возможные опечатки -Я печатаю это на телефоне,и трудно писать код на клавиатуре телефона.:)
Конечно, несмотря на все мои безуспешные поиски, я наконец нашел ответ только через несколько секунд после того, как задал вопрос об этом.
Таким образом, пакет mtools
может сделать это следующим образом:
# Create a 2 MB file
dd if=/dev/zero of=disk.img bs=1M count=2
# Put a FAT filesystem on it (use -F for FAT32, otherwise it's automatic)
mformat -i disk.img ::
# Add a file to it
mcopy -i disk.img example.txt ::
# List files
mdir -i disk.img ::
# Extract a file
mcopy -i disk.img ::/example.txt extracted.txt
mtools
работает, указывая буквы диска (, например C:
), со специальным :
диском (, указанным как ::
), ссылаясь на образ, указанный в командной строке с опцией -i
.