Использование sed для удаления "(двойные кавычки) в строках кода, оставляя их в реальных комментариях в vimrc

Я наконец учусь пользоваться sed редактировать конфиги при установке Ubuntu(Server/Desktop). После большого скрежета зубов и поиска правильного синтаксиса, чтобы не удалить "(комментируйте двойные кавычки с ровно одним пробелом после этого (реальные комментарии)), в отличие от строк, которые могут переключать код (ноль пробелов или два пробела для строк с отступом) в /etc/vim/vimrc файл, я выяснил, как заставить вещи работать с помощью следующей команды:

$ sudo sed -i.orig '/^\" [a-zA-Z]\|^"set compatible\|^\" let g:skip_defaults_vim = 1b/! s/^\"//' /etc/vim/vimrc

Будут ли гуру или ученики одинаково, пожалуйста, дайте мне знать, если бы я мог сделать это лучше (плотнее / чище / и т.д.)?

Пример использования awk за тот же результат?

Спасибо.

1 ответ

Решение

Использовать \1 пронумерованные переменные захвата в месте назначения изменения так s/^([[:space:]]*)"[[:space:]]*(let .*)/\1\2/

Также используйте sed 'your change;another change' file > file.tmp$$ && mv file.tmp$$ file

Это более безопасный и переносимый способ изменения файлов, чем sed -i ...

Для дотфайлов типа ~/.vimrc в ~ и conf файлах в /etc, используйте git, чтобы сохранить их локально. etckeeper отлично подходит для управления /etc с помощью git.

Некоторые люди используют augeas редактировать файлы conf или даже chef / puppet для автоматического управления ими.

Другие вопросы по тегам