当前位置:博客首页 > Python > 正文

02 linux常用命令

作者: Jarvan 分类: Python 发布时间: 2018-09-07 16:34 百度已收录

一、如何打开linux的命令行界面

  •  Windows打开

  1. 远程链接linux
    • 购买linux主机
    • 使用xshell远程链接linux
    • 使用winscp来向linux主机传送文件
  2. 本地安装cygwin
  • Linux/unix 打开

  1. 直接打开本地终端即可
  2. 通过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 显示版本信息

参考资料:https://www.cnblogs.com/luntai/p/6232824.html

参考资料:http://www.vpser.net/build/linux-vps-ssh-command.html

三、实例应用

一、查数据   (涉及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

发表评论