Использование Awk:
Предоставьте условия поиска в переменной, разделенной запятыми, которая называется поиск.
$ cat a
alice
bob
john
$ cat b
alice
bob
$ cat c
alice
$ cat search-count.awk
BEGIN {
# read search terms
split(search, searches, /,/)
delim=":"
# fill initially zero count for all searches
for (f = 1; f < ARGC; f++)
for (s in searches)
matches[searches[s],delim,ARGV[f]] = 0
}
{
for (s in searches) {
if ($0 ~ searches[s]) {
matches[searches[s],delim,FILENAME]++
}
}
}
END {
# print header
printf "FILE"
for (s in searches) {
printf "\t%s", searches[s]
}
printf "\n"
# print counts
for (f = 1; f < ARGC; f++) {
printf ARGV[f]
for (s in searches) {
printf "\t%s", matches[searches[s],delim,ARGV[f]]
}
printf "\n"
}
}
$ awk -v search="alice,bob,john" -f ./search-count.awk a b c
FILE alice bob john
a 2 2 0
b 1 1 0
c 0 2 0
Я знаю, что это старый пост, но у меня была та же проблема, и я нашел решение, поэтому я опубликую, если у кого-то возникнет такая же проблема.
В моем случае проблема заключалась в том, что PAM не был активен в файле sshd_config
, поэтому добавление следующей строки решило мою проблему:
UsePAM yes
Не забудьте перезапустить sshd:
service sshd restart