Я рекомендую не использовать такие инструменты, как userdel
, так как непонятно, почему foo
имеет uid 0
, и вы не хотите случайно удалить root.
Лучше отредактируйте /etc/passwd
и удалите запись для foo
. Убедитесь, что у самого root правильная запись:
root:x:0:0:root:/root:/bin/bash
Сделайте то же самое для /etc/group
. Удалите запись для foo
и проверьте запись для root
:
root:x:0:
Затем проверьте ввод пароля в /etc/shadow
, удалите foo
, проверьте ввод root
. Запись для root
должна выглядеть аналогично:
root:SOMEPASSWORDCODE:17219:0:99999:7:::
Возможно, есть дополнительные записи для foo
в /etc/group
. Возможный пример:
audio:x:29:foo,pulse
Для чистого задания также удалите foo
соответствующий foo,
в этих записях.
Если /home/foo
существует, проверьте и удалите его впоследствии.
В настоящее время foo
совпадает с root
. Вы не найдете процессы или файлы, принадлежащие foo, поскольку все они принадлежат root
. Владельцы файлов и процессов регистрируются по их uid, а не по имени. Таким образом, все процессы или файлы с uid 0 отображаются как root. (В качестве альтернативы все корневые процессы и файлы могут отображаться как foo
вместоroot
).
Сawk
:
awk '
NR==FNR && index($0, ">")==1 { a[$0]++ }
NR!=FNR && a[$0]>1 { $0=$0"_"(++b[$0]) }
NR!=FNR
' file file
Когда file
читается в первый раз, увеличивайте счетчик в массиве a
для каждой строки, начинающейся с >
.
Когда file
читается во второй раз, проверьте, больше ли счетчик для данной строки на единицу. Если true, увеличить счетчик в массиве b
и добавьте суффикс _
и значение счетчика. Затем распечатайте строку.
$ awk '{print $0 (/^>/ ? "_" (++c) : "")}' file
>ABC_1
hello
>ABC_2
thanks
>ABC_3
for
>ABC_4
your
>ABC_5
help
Если первое поле может варьироваться и вам нужен уникальный счетчик для каждого значения первого поля, вы просто делаете счетчик массивом, индексированным по первому полю:
$ cat file
>ABC
hello
>FOO
thanks
>ABC
for
>ABC
your
>FOO
help
$ awk '{print $0 (/^>/ ? "_" (++c[$1]) : "")}' file
>ABC_1
hello
>FOO_1
thanks
>ABC_2
for
>ABC_3
your
>FOO_2
help