Я видел это на днях:
sed --in-place '/en_US.UTF-8/s/^# //' /etc/locale.gen
Я все понимаю, кроме '/en_US.UTF-8/s/^# //'
. Я понимаю en_US.UTF-8
но что его окружает. Похоже, RegEx.
Я видел это на днях:
sed --in-place '/en_US.UTF-8/s/^# //' /etc/locale.gen
Я все понимаю, кроме '/en_US.UTF-8/s/^# //'
. Я понимаю en_US.UTF-8
но что его окружает. Похоже, RegEx.
sed # stream editor
--in-place # save changes to same filename
'/en_US.UTF-8/s/^# //' # program/script for sed
/en_US.UTF-8/ # on any line that contains this text
s/^# // # remove any initial 'comment' designator
/etc/locale.gen # filename to be read then replaced
Поэтому он раскомментирует en_US.UTF-8
в файле locale.gen
.
Существует справочная страница для sed
которая объясняет это. Есть много онлайн-введений в sed, которые бы охватили это.
Я все понимаю, кроме
'/en_US.UTF-8/s/^# //'
Предполагая, что это правильно, он удаляет #
и пробел в начале строк, которые содержат en_US.UTF-8
где - то в них.
Так получается, например:
# en_US.UTF-8 foo bar
# foo bar en_US.UTF-8
В это:
en_US.UTF-8 foo bar
foo bar en_US.UTF-8
Сломать:
' '
- Нормальная часть команды sed
./en_US.UTF-8/
- искать строки с en_US.UTF-8
в них.s
- команда подстановки./^# /
- Регулярное выражение. Если строка начинается с #
и пробела ...//
- Замена заготовки. Превращает # и пробел в ... ничего (без символа - удаляется!).