对于我的网站,我会记录用户访问过的网页。
看起来像这样:
admin viewed: page.php
cata viewed: login.php
noMadz viewed: buy.php
floringg0d viewed: search.php
noMadz viewed: trial.php
我如何使用grep命令将用户列表看起来像这样:
admin
cata
noMadz
floringg0d
我也想删除重复项。
谢谢!
答案 0 :(得分:6)
使用awk
:
awk '!a[$1]++{print $1}' file
答案 1 :(得分:2)
单独使用awk:
awk '!($1 in seen){seen[$1]++; print $1}' file
admin
cata
noMadz
floringg0d
答案 2 :(得分:2)
仅使用awk
:
$ awk '!($1 in tmp){tmp[$1]=$1} END {asort(tmp); for (i in tmp){print tmp[i]}}' file
admin
cata
floringg0d
noMadz
无需将sort
,uniq
或cat
等其他命令或程序与awk
一起使用。
使用cut
和sort
:
$ cut -d " " -f1 file|sort -u
admin
cata
floringg0d
noMadz
在这种情况下无需使用uniq
。
使用egrep
和sort
:
$ egrep -o "^[A-Za-z0-9]+" file|sort -u
admin
cata
floringg0d
noMadz
答案 3 :(得分:1)
你会想在这里使用剪切
cat <yourfile> | cut -f1 -d" " | sort | uniq
如果您想计算可以执行此操作的用户数
cat <yourfile> | cut -f1 -d" " | sort | uniq -c
如果您想按用户出现的次数排序
cat <yourfile> | cut -f1 -d" " | sort | uniq -c | sort -n
cut,sort和uniq是你的朋友。请记住,在你unq之前你总是需要排序。
答案 4 :(得分:0)
您可以使用awk,
awk '{ print $1 }' file | sort -u
示例:
$ (echo "admin viewed: page.php"; echo "cata viewed: login.php"; echo "noMadz viewed: buy.php"; echo "noMadz viewed: trial.php") | awk '{ print $1 }' | sort -u
admin
cata
noMadz