Как добавить разделители сообщений в сокат потока UDP - это piping?

Вероятно, потому что вы не используете команду userdel как суперпользователь (root) или другой привилегированный пользователь. Попробуйте:

sudo userdel accountname

Как указано в нескольких комментариях, также можно удалить домашний каталог, настроенный при удалении учетной записи пользователя, используя:

sudo userdel -r accountname
11
28.07.2018, 02:00
7 ответов

Сawk:

awk '$1 == "1" { print; x++ } END { print x, "total matches" }' inputfile
16
27.01.2020, 19:56

Использование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
5
27.01.2020, 19:56

Вопрос в теле

Выберите строки, начинающиеся с 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 и за которыми следует какой-либо знак препинания.

27
27.01.2020, 19:56

Любой из них будет выбирать строки с 1в первом столбце

awk '$1 == 1'
grep -w '^1'

Они оба могут быть расширены, так что вам даже не понадобится wcдля подсчета строк

awk '$1==1 { x++ } END { print x }'
grep -cw '^1'
14
27.01.2020, 19:56

Похоже, ты просто этого хочешь:

$ grep '^1\b' a
1        TGCAG.....
1        TGCAG......

Для счетной части этого:

$ grep -c '^1\b' file
2
19
27.01.2020, 19:56

Хорошие ответы здесь, но если предположить, что не каждая строка заканчивается пробелом (, например, если у вас есть некоторые, которые действительно попадают в ваш "=" ), вы можете использовать это:

 grep -c "^1[^0-9]" file

В основном это соответствует любой строке, которая начинается с единицы, за которой следует цифра, отличная от -, включая пробелы. Немного более подробный, но и более надежный. (Хотя стоит отметить, что здесь нет ничего для нулевого условия всего -одного -на -строке -, это не зависит от конца -из -строки.)

3
27.01.2020, 19:56

Вы также можете использовать строку ниже:

$ awk -F' ' '{if($1=="1") print $0}' <your file name> | wc -l

Параметр -Fделает разделитель полей пробелом. Если значение первого поля равно '1', будет напечатана его строка.

0
27.01.2020, 19:56

Теги

Похожие вопросы