检查文本文档中是否出现多次单词

时间:2014-10-10 00:32:38

标签: bash shell unix scripting

基本上,我需要检查文件以查看用户名是否出现多次,如果是,则将该用户名放入不同的文件中。

最后,脚本每3秒检查一次用户是否登录多次,如果是,则将其名称添加到名为user.deny的文件中。

这就是我目前的基本情况:

who -q > temp.file
if [ user occurs more than once in temp.file ]; then
that username > user.deny
fi

我只是想知道一种检查临时文件的方法,以查找多次出现的所有单词/名称。我无法使用grep,因为这需要一种模式。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用sortuniqawk执行此操作:

who | awk '{print $1} '| sort | uniq -c | awk '{ if($1 > 1) {print $2} }' >> user.deny

如果要在添加用户名之前进行一些检查,可以将其包装在循环中:

for u in $(who | awk '{print $1} '| sort | uniq -c | awk '{ if($1 > 1) {print $2} }')
do
  grep "$u" user.deny || echo "$u" >> user.deny
done

答案 1 :(得分:0)

使用Ruby

$ who |
  ruby -ane 'BEGIN { h = Hash.new(0) };
             h[$F[0]] += 1;
             END { puts h.select { |k,v| v > 1 }.keys.join ?\n }' > user.deny