Я видел это на днях:
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 - команда подстановки./^# / - Регулярное выражение. Если строка начинается с # и пробела ...// - Замена заготовки. Превращает # и пробел в ... ничего (без символа - удаляется!).