Как получить конкретное целое число - PullRequest
1 голос
/ 28 февраля 2011

У меня есть список номеров в файле в формате: {целое число} \ n.Итак, возможный список:

3
12
53
23
18
32
1
4

я хочу использовать grep, чтобы получить счетчик определенного числа, но grep -c "1" file results 3, поскольку он учитываеткроме 1, 12, 18 также.Как я могу исправить это?

Хотя все ответы до сих пор логичны, и я думал о них и проверял раньше, на самом деле ничего не работает:

username@domain2:~/code/***/project/random/r2$ cat out.txt
2
16
11
1
13
2
1
16
16
9
username@domain2:~/code/***/project/random/r2$ grep -Pc "^1$" out.txt
0
username@domain2:~/code/***/project/random/r2$ grep -Pc ^1$ out.txt
0
username@domain2:~/code/***/project/random/r2$ grep -c ^1$ out.txt
0
username@domain2:~/code/***/project/random/r2$ grep -c "^1$" out.txt
0
username@domain2:~/code/***/project/random/r2$ grep -xc "^1$" out.txt
0
username@domain2:~/code/***/project/random/r2$ grep -xc "1" out.txt
0

Ответы [ 5 ]

4 голосов
/ 28 февраля 2011

Используйте флаг -x:

grep -xc 1 file

Вот что это значит:

-x, --line-regexp
     Select only those matches that exactly match the whole line.
3 голосов
/ 28 февраля 2011

Есть несколько других способов сделать это, кроме grep

$ cat file
3 1 2 100
12 x x x
53
23
18
32
1
4

$ awk '{for(i=1;i<=NF;i++) if ($i=="1") c++}END{print c}' file
2

$ ruby -0777 -ne 'puts $_.scan(/\b1\b/).size' file
2

$ grep -o '\b1\b' file | wc -l
2

$ tr " " "\n" < file | grep -c "\b1\b"
2
2 голосов
/ 28 февраля 2011

Используйте это регулярное выражение ...

\D1\D

... или ^1$ при включенном многострочном режиме.

Протестировано с RegExr и они оба работают .

1 голос
/ 28 февраля 2011

Используйте, например, ^123$ для соответствия «Начало строки, 123, Конец строки»

0 голосов
/ 21 октября 2018
grep -wc '23' filename.txt

Будет подсчитано количество точных совпадений цифры 23.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...