02 linux常用命令
一、如何打开linux的命令行界面
-
Windows打开
- 远程链接linux
- 购买linux主机
- 使用xshell远程链接linux
- 使用winscp来向linux主机传送文件
- 本地安装cygwin
-
Linux/unix 打开
- 直接打开本地终端即可
- 通过ssh远程连接linux
二、Linux常用命令
sudo chmod -R 777 目录路径。现Permission denied,是权限不够的问题,所以需要为操作的目录添加权限,目录路径的例子:~/yuanrenxue/ (~代表主目录)
改变目录:cd
查看路径:pwd
创建目录:mkdir dirctory目录缩写
删除文件:rm
删除文件夹:rm -rf /*删除mydir目录,不需要确认,直接删除*/
移动文件:mv
复制文件:cp 另外一种是用重定向: cat 文件名 > 新文件名
打开文件:cat 会将文件内容显示出来
查看前50行:cat 文件名 | head -50
查看后100行 cat 文件名 | tail -100
查看文件行数: cat 文件名 | wc -l
>是重定向 |是管道重定向
Grep 命令 例子:
在文件a中统计 hello 出现的行数: grep hello a | wc -l
在文件a中统计hello出现的次数: grep -o hello a | wc -l
Wc命令
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
–help 显示帮助信息
–version 显示版本信息
三、实例应用
一、查数据 (涉及grep、awk、wc)
1)查找并打印包含关键词的所有行,两种方法如下:
cat 文件名 | grep “关键词” 测试发现可以不加引号
grep -i “关键词” ./文件名
2)若有四列数据,如何只查看某一列的前50行?如下:
cat 文件名 | awk ‘{print $列数}’ | head -50 $NF 表示最后一列 $0代表整行
3)条件语句:打印第2列中数字大于100的所有行:
cat 文件名 | awk ‘{if($2>100) print$0}’ | head -100 $0代表整行
4)条件语句:打印第1列中包含上海且第2列中数字大于100的所有行:
cat keyword | awk ‘{if($2>100 && $1~/上海/) print$0}’ | head -100 同时满足用&& 包含某关键词用~/关键词/
5) 计算第2列的总和:
cat keyword | awk ‘{ sum += $2}END{print sum}’ 要注意awk和 ’之间要有空格
6) 求第1列中包含“烟台”的数据的第2列的总和:
cat keyword | awk ‘{{if($1~/烟台/) {sum +=$2}}}END{print sum}’
awk默认以空格为分隔符,需要注意!!举例如果以逗号分隔数据,则awk无法起作用,如何更改成其他符号为分隔呢?命令如下: awk -F“符号”
6) 打印第1列中以“招聘会”为结尾的前100行数据:
cat keyword | awk ‘{print $1}’ | grep ‘招聘会$’ | head -100 关键词+$表示以 该关键词为结尾,这是正则语法的运用
7) 打印第1列中不包含“招聘会”的前100行数据:
cat keyword | awk ‘{print $1}’ | grep -v ‘招聘会’ | head -100 -v 指的是不包含 如果是 -o则指的是只打印匹配的文本
8) 打印第1列中包含“招聘”的数据,要求只打印“招聘“之后的部分,只打印20行数据
cat keyword | awk ‘{print $1}’ | grep -o ‘招聘会.*’ | head -100
二、数据排序 (涉及sort、uniq)
1) 将第2列中的数据按降序排列并打印出前100行
cat keyword | sort -k2nr | head -100 K+2代表列数,n代表数值类型,r是降序,默认是升序
2) 查询最后一列中的数据有多少个分组及分组包含的数据数量,展示前20组
cat keyword | awk ‘{print $NF}’ | sort | uniq -c | sort -nr | head -20 需要注意的是uniq只能对连续的数据进行统计,所以需要先用sort排序成规律的数据; -c是打印重复次数
3) SEO搜索习惯:查询第一列中用户搜索“招聘”及后面的词并统计重复次数,按照降序排列,打印前20行
cat keyword | awk ‘{print $1}’ |grep -o ‘招聘.*’| sort | uniq -c | sort -nr | head -20
4) SEO搜索习惯:计算以“招聘会”为结尾的关键词的总搜缩量(数据第一列为关键词,第二列为搜索量)
cat keyword | awk ‘{print $1,$2}’ | grep ‘招聘会 ‘ | awk ‘{sum +=$2}END{print sum}’ 注意招聘会后面有个空格
三、日志分析
1) 查询百度蜘蛛爬行次数
cat log.log | grep ‘Baiduspider/2.0’ | wc -l
2) 查询网页状态码并计算相应数量(状态码假设在第9列)
cat log.log | grep ‘Baiduspider/2.0’ | awk ‘{print $9}’ | sort | uniq -c | sort -nr
3) 查看各个目录爬行情况并排序(目录在第7列)用到了perl
cat log.log | grep ‘Baiduspider/2.0’ | awk ‘{print $7}’ | perl -p -e ‘s/\d+/ID/g’ |sort|uniq -c|sort -nr|head -50 玩法:是用perl将a/1222/.Html这类网址的1222替换成统一的字母ID,然后用sort排序后uniq去统计数量
4)查看百度带来的流量最多的页面,前10(如果grep没反应,可以前面加个e,wd|word是百度来的流量链接常见的关键词前面的字符串)
cat log | egrep ‘www.baidu.com/.*(wd|word)=’ |head -10
5)查看百度流量来访页面的前20
cat log | egrep ‘www.baidu.com/.*(wd|word)=’ | awk ‘{print $7}’| sort | uniq -c | sort -nr | head -20
四、百万级sitemap生成
1) 如何将url生成xml格式的sitemap提交给百度(百度接受单个文件最多50000行)
分隔数据:split -50000 原文件 新文件名格式_ 实例:split -50000 url ceshi_
生成xml格式,利用写好的python(闯哥写的sitemap_pc.py): python sitemap_pc.py ceshi_aa