Вот еще один sed
:
sed 'h;s/\./_/g;G;s/=.*=/=/'
Он выполняет только две замены, независимо от количество точек, предшествующих =
, поэтому при вводе типа:
my.var.an.other.var.with.many.dots=line.with.many:chars:and_numbers.and.stuff
результат будет
my_var_an_other_var_with_many_dots=line.with.many:chars:and_numbers.and.stuff
Это работает нормально, когда есть один =
символ в строке (как в вашем примере ввода) .
Более общий подход, который всегда заменяет только до первого =
(и только если строка содержит хотя бы один =
), даже если их несколько =
символов в строке:
sed '/=/{ # if line matches =
h # copy pattern space over the hold space
s/\./_/g # replace all . with =
G # append hold space content to pattern space
s/=.*\n[^=]*=/=/ # replace from the first = up to the first = after
}' # the newline character with a single =
или
sed -e '/=/{h;s/\./_/g;G;s/=.*\n[^=]*=/=/' -e '}'
, поэтому при вводе типа:
my.var.with.many.dots.but.no.equal.sign.and.stuff
my.var.with.many.dots=line.with.many:chars:numbers_and.stuff
other.var.with.many.dots=and.with.more.than=one.equal.sign=and.stuff
выводится:
my.var.with.many.dots.but.no.equal.sign.and.stuff
my_var_with_many_dots=line.with.many:chars:numbers_and.stuff
other_var_with_many_dots=and.with.more.than=one.equal.sign=and.stuff
Вы можете внимательно редактировать файл (! )с vipw
. (Не используйте редактор непосредственно для файла, так как vipw
проверит результат на работоспособность -перед обновлением /etc/passwd
. )Если вам нужен другой редактор, например nano
, вы можете запросить его следующим образом:
vipw # Uses default editor
EDITOR=nano vipw # Uses nano as the preferred editor
Вы можете отсортировать файл по возрастанию UID. Это позволит отделить системные учетные записи, которые обычно имеют более низкие номера, от учетных записей пользователей, которые обычно имеют более высокие номера :
.sort -n -t: -k3,4 /etc/passwd >/etc/passwd.old &&
cp -fp /etc/passwd.old /etc/passwd
(При желании все это можно запустить в одной строке. )Неизмененная копия файла паролей остается в /etc/passwd.old
.
Диапазоны UID определяют системные и пользовательские учетные записи.
Это если вы не используете глобальный сервер LDAP или аналогичный для управления пользователями и группами, которые по-прежнему будут соответствовать эталону, но просто расширят диапазоны.
Обычно системные учетные записи или учетные записи с UID менее 100 зарезервированы системой. Приложения, создающие локальную запись для помощи в решении проблем с повышением привилегий в случае дефекта дизайна, имеют номер 100 -499. 500 и выше предназначены для пользователей.
Обычно ручное редактирование локальной базы данных паролей не приветствуется и должно осуществляться с помощью таких инструментов, как useradd
, userdel
, passwd
, usermod
и т. д.
Если вы просто ищете способ аудита учетных записей и хотите, чтобы они сортировались на выходе, следующий бит будет работать.
sort -d: -k2 /etc/passwd