Вероятно, потому что вы не используете команду userdel
как суперпользователь (root) или другой привилегированный пользователь. Попробуйте:
sudo userdel accountname
Как указано в нескольких комментариях, также можно удалить домашний каталог, настроенный при удалении учетной записи пользователя, используя:
sudo userdel -r accountname
Сawk
:
awk '$1 == "1" { print; x++ } END { print x, "total matches" }' inputfile
Использованиеgrep
:
grep -c '^1\s' file
Это будет соответствовать любой строке, начинающейся с 1, за которой сразу следует пробел, и предоставит количество этих строк (, устраняя необходимостьwc -l
)
$ cat input
79 TGCAG.....
1 TGCAG.....
1257 TGCAG.....
1 TGCAG......
$ grep -Ec '^1\s' input
2
Выберите строки, начинающиеся с 1
и заканчивающиеся пробелом
grep -c '^1\s' file
grep -c '^1[[:space:]]' file
Это также даст количество строк (без необходимости вызова wc)
1
не , за которым следует другое число (или ничего):
grep -cE '^1([^0-9]|$)' file
Но у обоих вышеприведенных решений есть некоторые интересные проблемы, продолжайте читать.
В теле вопроса пользователь утверждает, что файл "разделен табуляцией".
Строка, начинающаяся с 1
, за которой следует табуляция (фактическая табуляция в команде ). Это не удается, если разделителем является пробел (или любой другой, или нет):
grep '^1 ' file
Строка, начинающаяся с 1
, за которой следует пробел (фактический пробел в команде ). Это не удается, если разделитель является любым другим или никаким.:
grep '^1 ' file
grep '^1( | )' file
grep '^1[[:blank:]]' file
Более гибкий вариант — включить несколько пробелов (по горизонтали и по вертикали ). Набор символов [:space:]
состоит из(пробела ),
\t
(горизонтальной табуляции ),\r
(возврата каретки ),\n
(новой строки ),\v
(вертикальной табуляции )и\f
(подача формы ). Но grep не может соответствовать новой строке (, это внутреннее ограничение, которого можно избежать только с помощью опции -z
). Можно использовать как описание на разделителе. Можно и короче,использовать доступное сокращение GNU\s
:
grep -c '^1[[:space:]]` file
grep -c '^1\s' file
Но эта опция не работает, если разделителем является что-то вроде двоеточия :
или любого другого знака препинания (или любой буквы ).
Или, можно использовать переход от цифры к границе "не цифра", ну собственно "символ не в [_[:alnum:]]
(_a-zA-Z0-9
)":
grep -c '^1\b' file # portable but not POSIX.
grep -c '^1\>' file # portable but not POSIX.
grep -wc '^1' file # portable but not POSIX.
grep -c '^1\W' file # portable but not POSIX (not match only a `1`) (not underscore in BSD).
При этом допустимы строки, начинающиеся с 1 и за которыми следует какой-либо знак препинания.
Любой из них будет выбирать строки с 1
в первом столбце
awk '$1 == 1'
grep -w '^1'
Они оба могут быть расширены, так что вам даже не понадобится wc
для подсчета строк
awk '$1==1 { x++ } END { print x }'
grep -cw '^1'
Похоже, ты просто этого хочешь:
$ grep '^1\b' a
1 TGCAG.....
1 TGCAG......
Для счетной части этого:
$ grep -c '^1\b' file
2
Хорошие ответы здесь, но если предположить, что не каждая строка заканчивается пробелом (, например, если у вас есть некоторые, которые действительно попадают в ваш "=" ), вы можете использовать это:
grep -c "^1[^0-9]" file
В основном это соответствует любой строке, которая начинается с единицы, за которой следует цифра, отличная от -, включая пробелы. Немного более подробный, но и более надежный. (Хотя стоит отметить, что здесь нет ничего для нулевого условия всего -одного -на -строке -, это не зависит от конца -из -строки.)
Вы также можете использовать строку ниже:
$ awk -F' ' '{if($1=="1") print $0}' <your file name> | wc -l
Параметр -F
делает разделитель полей пробелом. Если значение первого поля равно '1', будет напечатана его строка.