夜息:Shell学习笔记(删除重复行)

其实已经积攒了不少心得,之前都没记下来。现在打算慢慢更新
获取每个IP访问量,并且排序
老的做法 cat log | awk ‘{print $1}’ | sort | uniq -c | sort -k1r
高效率的做法 cat log | awk ‘{a[$1]++} END {for (b in a) print b”\t”a[b]}’ | sort -k2r
通过数据自增来一次性去重。
衍生拓展

1.删除重复行

awk ‘!a[$0]++’ filename
2.合并同类项输出报表
张三 88
陈涛 78
陈涛 90
李四 77
王五 88
王五 99
张三 80
李四 90
输出成
张三 88 80
陈涛 78 90
王五 88 99
李四 77 90
awk ‘{a[$1]= a[$1]” ” $2} END  {for (b in a) print b“ ”a[b]}’  filename
感谢我的前同事,李学明http://somethings.me/同志给予我shell学习方面的帮助和启发。
(P.S:这个脚本排上了大用场。采集党的福音)
N久前有一个excel整理关键词的相关性,这边shell版本的也搞定了一部分。
在大量关键词文件根目录下
awk -F”,” {print FILENAME$0}’ *.csv | //将文件名和关键词拼接
awk -F”,” ‘{if ($4 <50) print $1}’ | //将每月广泛搜索<50的过滤掉,同时可以把表头过滤掉
awk -F”1329|csv” ‘{print $1}’ > FILENAME //将文件名中乱七八糟的东西去掉,这边注意,只输出$1,上面的命令还需要输出一次$3,因为$1和$3的编码不一样,一个是ANSI,一个是UTF-8,放在一起没法弄,最后用ue或者ep改一下编码再贴到一起。
awk -F”,” ‘{ if (a[$1] < 10) {a[$1]++; print $0}}’ //只输出相关性前10的词

最后的结果是类似下面

A|A1
A|A2
A|A3
A|A4
B|B1
B|B2
B|B3
比较漂亮格式了。
文件行内去重
while read line
do
echo $line | awk ‘BEGIN{OFS=”\n”} {if($1=$1) print $0}’|sort -u| awk ‘{printf $0″ “}END{printf “\n”}’
done < test.txt

夜息个人介绍:

夜息 ,原名陈汝一。目前就职于途牛旅游网负责SEO工作,5年SEO经验。SEO顾问服务过多个行业,大中小规模的网站,并且取得了明显的流量增长效果。在业内具有良好的人脉资源,与国内各大互联网公司相关人士有密切交流。SEO思想被百度官方推荐,与百度官方有良好的沟通渠道。

夜息SEO培训,做有技术的SEO。不是用一个模具把你塑造成一个不会独立思考只会高效执行的机器人,我们希望赋予每一个学员真正的思考能力与可借鉴的真实经验。网址:www.itseo.net

zh_CNChinese
滚动至顶部