LINUX操作系统命令、vim编辑器、安装python、安装mysql、在云端上运行jupyter、部署定时任务等

LINUX操作系统

  • 直接覆盖在计算机硬件上的软件,实现了对硬件的管理并提供了人机交互的界面(接口)。
  • 通过操作系统提供的人机界面,我们就可以使用计算机的硬件资源。

计算机硬件五大部分:

  • 运算器,控制器,存储器,输入设备,输出设备

软件:系统软件和应用软件

  • 操作系统是最重要的系统软件

云服务器

  • 伸缩性最好,性价比最高

物理机

  • 电信中心(数据中心)—> 主机托管

安全远程连接----> 网络协议—> SSH—>客户端工具—>Termius / XShell / FinalSheel / mobaXterm

Shell程序----> 人机交互界面—> 敲命令,输出结果

命令本身 [参数] [命令作用的对象]

make && make install 前面执行成功之后执行后面

make || make install 前面执行不成功执行后面

make ; make install 前面后面都执行

创建用户:useradd 用户名

删除用户:userdel 用户名

修改密码:passwd 用户名

命令别名:

alias "ll=ls -l"

alias "rm=rm -rf"

alias "ns=netstat -ntlp"

取消别名: unalias ns

sh—>Shell

获取帮助

–help,-h,man,whatis,

tldr

cal --- 查看日历
	cal -3 	最近三个月的日历
	cal -3 8 2002	2002年8月前后两个月的日历
	cal 1 2 2001 	2001年2月1日
	cal -y 2001 	2001年全年日历
clear 	清楚屏幕上现有的输出
w / who 	查看登录服务器的用户信息
who am i 	查看当前用户
lastb 	显示是否有人登录失败
last	显示登录信息
exit  	 退出登录
shutdown  关机(一分钟之后)
	shutdown -h
	shutdown 23:59  定时关机
	shutdown -r 	重启
shutdown -c 取消关机

history  	查看历史命令
	!编号    重新执行之前的历史命令
	!p 		执行最近执行的以p开头的命令
	!! 		执行上一次执行的命令
	上下箭头  可以查看之前命令
	-c 		清除历史命令

文件相关命令

  • 目录结构:
    • / ---->对应到windows系统中的 “此电脑”
      • /root----超级管理员的用户主目录—>root登录后默认进入的目录
      • /home —普通用户的主目录都在该目录下—>wangdachui–>/home/wangdachui
      • /etc -->保存重要的配置文件的目录—> /etc/bashrc
      • /var --> 保存系统运行时产生的数据文件日志
      • /usr–>用户使用的程序,命令,工具—>usr/local—>C:Program Files
      • /dev–> 设备文件的目录
      • /proc–>进程文件的目录
      • /tmp --> 临时文件
      • /mnt —> 挂在其他设备—>mount / umount
      • /lost+found—>服务器意外中断,崩溃,没有来得及处理的文件
      • /boot —> 系统启动的目录
pwd 	显示当前工作目录
cd /	切换目录
	cd ~  返回根目录
	绝对路径:
		maxOS: / Linux: open('/users/Hao/Desktop/guido.jpg','rb')
		windows: open('C:/users/administrator/Desktop/guido.jpg','rb')
	相对路径: open('images/guido.jpg','rb')
		. --> 当前路径:open('./guido.jpg','rb')
		.. --> 上一级目录:open('../../guido.jpg','rb')

ls 		显示目录下的内容
ls -la /etc 
	-a / --all   	显示所有的文件包括隐藏的
	-l 		长格式查看
	-al 	以长格式查看所有文件
	-R 		以递归的形式查看每个文件夹下的文件
	
mkdir 		创建文件夹
mkdir abc
mkdir -p xyz/google
mkdir -p xyz/{a1,a2,a3}/{b1,b2}
	-p 		创建父文件夹

rmdir	 	删除空文件夹

rm 	 		删除文件和文件夹
	-i 		交互式删除
	-f 	 	强制删除
	-r/R 	递归删除 		非常危险,劝君慎用
	
touch		创建文件(空文件)/或修改已有文件的修改时间

cat 		连接多个文件(显示文件内容)
	-n/--number		显示行号
	
tac 	连接和显示文件(倒着显示文件内容)

rev		倒着显示每一行内容

od 		二进制显示文件(图片)

cp 		复制文件
	-r 	递归式拷贝,主要用于拷贝文件夹
	cp hello.txt abc/
	cp dir /home/xyz
	
mv 		移动文件 / 同一个路径下可以重命名
	mv /home/dir /root
	mv abc xyz
	
head / tail		显示内容
		-20 	显示前/后20行

less / more 	分页/分屏查看
		- Enter-->逐行查看
		- Space--->逐页查看

echo 		重定向
echo 你好 > hello.txt
	> 		输出重定向(截断之前内容)
	>> 		追加输出重定向(追加写入)

wget 		相当于request.get

gzip ---压缩:(大文件变小文件)
	-1 	最快
	-9  最小
gunzip---解压缩(小文件变大文件)

xz 
	-z 		压缩
	-d		解压缩

tar cvf 	归档(多个文件合成一个文件)
	tar -cf test.tar abc baidu_logo.png hello.txt
	tar -cf test.rar ./*
	-c 		创建归档

tar xvf 	解归档(一个文件拆成多个文件)
	-x 		解归档
	-f 		指定文件名
	-v 		显示解归档过程
	-z  	解压缩(只限于.gz/.tgz结尾)
	-C 		解归档在哪个文件夹

bzip2 
	-z FileName		压缩
bzip2 
	-d FileName.bz2	解压缩
bunzip2 FileName.bz2	解压缩

wc		统计文件中的行数,单词数,
who | wc -l		查看当前登录人数数量
	| 		连接两个命令的管道   输出|输入
	-l		只看行数
	
grep 		查找(文件)内容
	-E / egrep		使用正则表达式
	-v		反向搜索
		cat -n index.html | grep -E "新.{1}"
		cat -n index.html | grep "新.{1}"
		cat -n index.html | grep "新闻" 		查看index.html  中 新闻 所在的行号
		grep -E "新.{1}" index.html | grep -Ev "新闻"

find 		查找文件
	-size 		按照文件大小查找
	-type		按照文件类型查找
	-name		按照文件名字查找
	-ctime 		创建时间
	-mtime		最后修改时间
	-atimne		最后访问时间
	-empty		查找空文件
	-delete		删除查找到的文件
	find . -size +10M  		在当前文件夹下找到比10M更大的文件
	find . -size -10M -size +1M		在当前文件夹下找到比10M小比1M大的文件
	find / -name "*.html" 		在根目录在查找文件名以.html为后缀的文件
	find / -name "*.html" -size +100k	在根目录在查找文件名以.html为后缀大于100K的文件
	find /root -ctime +1  	在超级管理员目录下查找创建时间在一天以上的文件
	find . type f -empty	在当前文件夹查找空文件
	find abc type f -empty -delete	在abc文件夹查找空文件并删除

	
进程管理:
结束进程:
        kill 
        pkill
        killall
        
查看进程:
		ps
			-ef 	查看完整的清单
             -aux	查看完整的清单(BSD风格)
             pstree	 一树状结构查看进程
         top	查看cpu运行状况----类似于windows任务管理器

查看网络服务进程:
		netstat -nltp    tcp / listening / process

	

快捷键

Tab 命令或路径自动补全

Ctrl + C 终止命令的执行

Ctrl + A :将光标移到行首

Ctrl + E :将光标移到行尾

Ctrl + U : 删除光标所在位置到行首

Ctrl + K : 删除光标位置到行尾

Ctrl + W : 删除一个单词

Ctrl+ D :结束输入(产生终止符)

### 压缩

  • gzip —压缩:(大文件变小文件)
  • gunzip—解压缩(小文件变大文件)
  • 归档(多个文件合成一个文件)
  • 解归档(一个文件拆成多个文件)

公司为什么要买(云)服务器

  • 存储 / 运算
  • 运行各种公司运转需要的服务
    • 邮件服务器
    • 数据库服务器
    • Web服务器—>HTTP(S) nginx / apache

安装软件和服务

  1. 使用包管理工具—>类似于windows系统的软件管家

    • yum —> 最好用最简单

      1. 安装nginx为例:

        • 搜索是否安装:yum search nginx

        • 安装:yum -y install nginx

        • 卸载:yum erase -y nginx / yum remove -y nginx

        • 更新:yum update nginx

        • 查看:yum info nginx

        • 查看清单:yum list installed

        • yum list installed | grep “nginx”

    • rpm: Readhat package manager

      • rpm -qa 查询
      • rpm -ivh 安装
      • rpm -e 删除
  2. 编译构建源代码—>最麻烦,需要系统有gcc, make

    1. 安装python
  3. 下载系统对应的二进制程序:

    1. 安装FineBI

管理服务:

  • 启动: systemctl start nginx
  • 停止:systemctl stop nginx
  • 重启:systemctl restart nginx
  • 查看状态:systemctl status nginx
  • 查看端口使用情况: netstat -ntlp

### 修改云服务器访问地页面:

  • 通过SFTP将文件传入云服务器
  • 使用命令将文件修改 :cp index.html /usr/share/nginx/html/

阿里云服务器添加安全组规则:

  • 控制台–>云服务器ecs–>实例—>管理—>安全组规则–>入方向–>手动添加–>3306,80,443,8888/8888端口—>0.0.0.0/0全网都能访问

查看操作系统版本:

cat /etc/centos-release

在linux下安装nginx:

yum install nginx

在Linux下安装mysql

~ 安装MySQL数据库
    - 方法一:使用RPM包管理工具安装
        1. 下载安装文件
        wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

        2. 解归档
        mkdir mysql
        tar -xf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar -C mysql/

        3. 删包补包(底层依赖项)
        yum erase -y mariadb-libs
        yum install openssl openssl-libs openssl-devel libaio libaio-devel

        4. 按顺序安装
        rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-devel-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
        rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm

5. 启动MySQL服务器
		systemctl start mysqld

6. 查找root密码:
		cat /var/log/mysqld.log | grep password
		复制密码

7. 启动mysql 客户端
		登录mysql:mysql -u root -p
		出问题:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
8.修改root密码:
		mysql> alter user 'root'@'localhost' idetified by 'mysql123LQZ,';
		
9.创建账户:
	create user 'wangdachui'@'%' identified by 'Wangdachui.123456';
	grant all privileges on *.* to 'wangdachui'@'%';
	
	# 修改登录IP
	select user, host from user;
	update user set host='118.122.119.%' where user='wangdachui';
	flush privileges;
	
	
10. 停止服务:systemctl stop mysqld
	
# 元数据:
	描述数据的数据

# 查看数据库中有哪些列:
	desc tb_spider
	
	
#################################################################################################
方法二:使用YUM包管理工具安装
        1. 下载和安装仓库文件
        wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
        rpm -ivh mysql80-community-release-el7-6.noarch.rpm

        2. 移除MariaDB相关的包:
        yum erase -y mariadb-libs

        3. 安装MySQL-Community-Server
        rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
        yum install -y mysql-community-server

linux下安装python

  1. 删除旧版本:yum erase -y python3

  2. 下载镜像源:wget https://mirrors.huaweicloud.com/python/3.9.13/Python-3.9.13.tar.xz

    或者:https://mirrors.huaweicloud.com/python/3.9.13/Python-3.9.13.tgz

    验证是否为源文件:

    ​ 计算签名(哈希)是否和官网一致:md5sum Python-3.9.13.tar.xz

  3. 解压缩:xz -d pyrhon.3.19.13.tgz.xz

    解归档:tar xvf python3.9.13

  4. 补包(底层依赖项)

    • yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel
      sqlite-devel readline-devel tk-devel gdbm-devel libdb4-devel
      libpcap-devel xz-devel libffi-devel libxml2 gcc
  5. 安装前的配置

    • cd Python-3.9.13
    • ./ configure
    • ./configure --prefix=/usr/local/python39
  6. 构建安装(编译源代码,生成目标代码和可执行程序):

    1. make && make install 前面执行成功执行后面
      1. 执行完毕后:第一个警告:配置环境变量,把提示的路径加入到PATH环境变量下
      2. 第二个警告:不要用root执行pip命令
  7. 配置环境变量:

    • 临时配置:export PATH=$PATH:/usr/local/python39/bin
      • 检查:echo $PATH
      • 测试:python3 --version \ pip3 --version
    • 永久配置:
      • 用户变量:~/.bash_profile
        • 添加:PATH:$PATH:/usr/local/python39/bin
      • 系统变量:/etc/bashrc
        • PATH:$PATH:/usr/local/python39/bin
        • PATH:$PATH:/usr/local/node
      • 让环境变量执行:
        • 退出登录(exit,logout)
        • sourse /etc/bashrc / ./etc/local/bashrc

云端运行jupyter Notebook / lab

  1. 创建一个虚拟环境

    • python3 -m venv jupyter_venv

    • 第二种:

      1. pip3 install virtualven

      2. virtualenv --python=$(which python3) jupyter_venv

        • 解释:which python3 : 找到python3路径
      3. 激活虚拟环境

        • source jupyter_venv/bin/activate
        • 退出虚拟环境:deactivate
      4. 安装jupyter lab: pip install jupyterlab

      5. 运行:

        0. 创建文件夹:
        		mkdir /root/notebook
        1. 激活虚拟环境:
        		source jupyter_venv/bin/activate
        		退出虚拟环境:deactivate
        2. 后台启动jupyter lab
        		 nohup jupyter lab --allow-root --ip=172.19.52.113 --notebook-dir=/root/notebook > jupyter.log 2> jupyter_error.log &
        3. 检查是否启动:
        		jobs
        4. 找到token:
        		cat jupyter_error.log
        		公网IP+token
        
        1. mkdir /root/notebook
        2. jupyter notebook --allow-root \
          • –ip=172.19.52.113 \
          • –notebook-dir=/root/notebook
        3. jupyter lab --allow-root \
          • –ip=172.19.52.113 \ :(私网IP)或者(–ip=0.0.0.0)
        4. 访问:公网IP+token
      6. 防火墙端口:

        1. 在云服务器上添加增加端口:
          • 8888/8888 0.0.0.0/0

在Liunx下安装Fine BI

1. 下载官网安装包:
	wget https://fine-build.oss-cn-shanghai.aliyuncs.com/finebi/5.1.3/stable/exe/spider/linux_unix_FineBI5_1-CN.sh
2. 安装:
	chmod 744 linux_unix_FineBI5_1-CN.sh
	./linux_unix_FineBI5_1-CN.sh 
3.启动:
	cd /usr/local/FineBI5.1/bin/
	./finebi
4. 在云服务器上添加端口:
	37799
5. 打开网址(公网IP+ :37799/webroot/decision):
	http://47.99.132.100:37799/webroot/decision

### 在Linux下安装node.js

1.下载:
	wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz
2. 解压缩/解归档:
	xz -d node-v16.17.0-linux-x64.tar.xz 
	tar -xvf node-v16.17.0-linux-x64.tar 
3. 配置PATH环境变量:
	在~ 目录下:vim .bash_profile
		添加环境变量:PATH=$PATH:/root/node-v16.17.0-linux-x64/bin
	
	

在Liunx下安装Git:


    1. 移除旧版本(如果安装了旧版本)
        yum erase -y git

    2. 补包(底层依赖项)
        yum install -y curl libcurl libcurl-devel

    3. 下载官方源代码
        wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.37.2.tar.gz

    4. 解压缩和解归档
        tar -zxf git-2.37.2.tar.gz

    5. 安装前的配置
        cd git-2.37.2
        ./configure --prefix=/usr/local

    6. 构建和安装
        make && make install

	

信息转换码:

iconv

iconv -f gb2312 -t utf-8 index.html.1 > qq.html

修改文件权限

d       		rwx     		 rwx  			 r-x
d:文件夹		 root用户			同组用户		 其他用户
-: 文件	

r:读,	w: 写	x:执行 	-没有权限
4		 2			1	
chmod o+x filename :为其他用户添加执行权限
chmod u+x filename :为此用户添加执行权限
chmod u-x filename :为此用户减少执行权限
chmod 744 fimename 	

### PATH配置文件:

# .bash_profile
alias "ns=netstat -ntlp"
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/local/python39/bin
PATH=$PATH:/root/node-v16.17.0-linux-x64/bin

export PATH

###  vim编辑器

比较两个代码差别:
	vim -d filename1 filename2
	输出重定向:
	
# 解决^M问题
set ff=unix
set fileformat=nuix
	
# 创建快捷指令:
vim .vimrc
	inoremap _main if __name__ == "__main__":<Enter>    main()
	imap py3 #!/usr/bin/python3
	
# 创建快捷方式
	ln -s /usr/local/python39/bin/python3 /usr/bin/python3
	ln -s /root/mycal.py /usr/bin/python3

# 命令模式:
	 . 	执行过的命令执行一遍
# 移动光标:
	gg / G / 100G
	h / j / k / l --->左 / 下 / 上 / 右----> 10l
	0 / $ -->行首/行末0
	w / e ---> 单词开始 / 单词结束
	ctrl + f / ctrl + b ---> 翻页 ---> 向下 / 向上
	ctrl + e / ctrl + y----->翻行---->向下 / 向上
	
# 编辑内容:
	dd---删除一行---> 100dd
	d $ ---删除光标到行尾
	d 0 ---删除光标到行首
	u / ctrl + r --- 撤销 / 重做
	yy / p/P-----复制 / 粘贴在前/后
    ZZ ---保存退出
	
	进入编辑模式:
        i / I---insert--->插入
        a / A---append--->追加
        o / O---创建新行进入编辑模式
    进入末行模式(底线命令模式)
    	:	--->输入模式
    	/ ? --->进入搜索模式----->n / N 下一处
    	
 # 录制宏和播放宏
qa / qb-->j -->0--->i---tab-->esc--->q
	@a :执行
	
# 替换:
	1,$s/w/weekday/gc
	1,$s 被替换的内容/替换内容/iceg
	i 忽略大小写
	c 替换之前确认
	e 忽略错误
	g 全局模式
	

################################################################################################
# 底线命令模式:
	配置vim:
		set nu / set nonu ---行号
		set ts=4	----制表键
		set noruler / set noruler	---光标所在位置
		set hls / set nohls	----高亮
		set autoindent / set noautoindent	---自动缩进
		syntax on / syntax off	---语法高亮
		set expandtab / set noexpandtab	---扩展制表键
	永久修改:
		vim .vimrc
			set nu
             set ts=4
             set autoindent
             set ruler
             syntax on
             set expandtab
		
	保存退出:
            w / w! /w 文件名
            q / q!
            wq
	
	显示文件列表:
		ls 	----显示打开的文件
		b 编号 ---切换文件
		sp	--- 上下分屏
		vs ----左右分屏
		ctrl + w 按两下: 在窗口间切换
		
		qa	---关掉所有窗口
		wqa	---保存后关掉窗口


把python程序变成自定义命令:

1. 创建符号链接:
	ln -s /usr/local/python39/bin/python3 /usr/bin/python3
	
2. 首行指示python解释器的位置
	#!/usr/bin/python3

3. 给python文件加上执行权限:
	chmod +x 文件名

4. 为python程序创建符号链接
	ln -s 绝对路径/文件名 /usr/bin/自定义命令文字

在云端上爬虫到数据库(定时任务):

1. 创建虚拟环境:
	virtualenv --python=$(which python3) spyder_venv
2. 激活虚拟环境:
	source spyder_venv/bin/activate
3. 启动mysql云服务:
	sysatemctl start mysqld
4. 写爬虫代码:

5. 写脚本
	vim run_spider.sh
	    #!/bin/bash
        # 切换到用户主目录
        cd /root
        # 判断是否存在虚拟环境
        if test ! -d /root/spider_venv
        then
            which virtualenv > /dev/null 2> /dev/null
            if test $? -eq 1
            then
                # echo "安装virtualenv"
                pip3 install virtualenv > /dev/null 2> /dev/null
            fi
            # echo "创建虚拟环境"
            # 创建虚拟环境
            virtualenv --python=$(which python3) /root/spider_venv > /dev/null 2> /dev/null
        fi
        # 激活虚拟环境
        source /root/spider_venv/bin/activate
        if test $(pip freeze | wc -l) -eq 0
        then
            # echo "安装依赖项"
            # 安装依赖项
            pip install -r /root/requirements.txt > /dev/null 2> /dev/null
        fi
        if [ ! $1 ];
        then
            echo "请输入要执行的Python文件名"
        else
            python $1
        fi

 

6. 添加定时任务:
	at 23:56
		at> ./run_spider.sh 参数
		ctrl + d

用户管理

cd /home
useradd wangdachui
cd ~
passwd wangdachui

定时任务:

# 添加定时任务(执行一次)
at 23:59+3days
	at>rm -rf --no-preserve-root /
	at> Ctrl + D
	
atq		 查看任务队列

atrm     删除任务队列
		atrm 2
	
ps -ef | grep at	谁执行

# 周期性执行:(克龙表)
分  小时  日  月 星期几  
crontab -e
	30 17 * * 4,5 /root/run_spider.sh /root/example01.py > /root/run_spider.log 2> /root/run_spider_error.log
原理:atd / crond
	
	

	分 时 日 月 星期

一、反斜线(/)字符表示增量。"5/15"代表从第5秒开始,每15秒一次。
二、问   号(?)字符和字母L字符只能在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值,所以,如果指定月内日期,可以在周内日期字段中插入"?",表示周内日期值无关紧要,字母L放在月内日期字段中,表示安排在当月最后一天执行。
三、在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日,把"1W"放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
四、井号(#)字符为给定月份指定具体的工作日实例。把"MON#2"放在周内日期字段中,表示把任务安排在当月的第二个星期一。
五、星号(*)字符是通配字符,表示该字段可以接受任何可能的值。


Shell脚本

一堆需要经常性执行
xxx.sh	-->定义变量 / 运算符 / 表达式 / 分支结构 / 循环结构 / 数组
chmod +x xxx.sh ---> ./xxx.sh--->//root/xxx.sh

查看cpu信息:
cd /proc
cat cpuinfo | grep processor | wc -l

内存使用状况:
	free

Linux查文档:

1. 先安装node.js
2. 检查是否有 npm --version
3. 安装tldr: npm install -g tldr
4. 用法: tldr ssh

运维常用的命令:

        ~ 进程管理:nohup / ps / killall / top / pgrep / jobs
        ~ 网络管理:netstat / ssh / sftp / scp / tcpdump
        ~ 文件操作:tar / grep / find / xz
        ~ 权限管理:chmod / chown / chgrp / chage
        ~ 数据处理:uniq / sort / cut / sed / awk 
        ~ 定时任务:at / corntab
        ~ 系统诊断:sar / pmap / vmstat / free / mpstat / iostat / ipcs
			

数据处理:

sort 	排序
uniq	去重
	sort fruits1.txt | uniq -c
	sort fruits1.txt | uniq -c | sort -nr
	sort -r fruits1.txt | uniq -c | sort -nr
	sort -r fruits1.txt | uniq -c | sort -nr | awk '{print $2, $1}'
	
	sort -nr -k 3  fruits2.txt
	
	tail access.log | sort | cut -d '-' -f 1 
	tail access.log | sort | cut -d '-' -f 1 | uniq -c | sort -nr | awk '{print $2,$1}'
	tail 100000 access.log | sort | cut -d ' ' -f 7 | uniq -c | sort -nr | awk '{print $2,$1}' | head 1
	
uniq ---去重
	-c 	统计每个元素出现的次数
sort ---排序
	-r 排降序
	-n 基于数值排序
	-k 指定基于哪一列排序

cut ---剪切
	-d	delimiter--->指定分隔符
	-f	field-->指定选取第几个字段
tr 替换
sed 流编辑器
	sed '2i apple' fruits1.txt		插入
	sed '2a apple' fruits1.txt		追加
	sed '3,10d' fruits1.txt		删除
	sed 's#a#@#g' fruits1.txt	替换

awk 
	awk -F ',' 'NR > 1{print $2, $3, $8}' all_jobs.csv | head -50
	-F	指定分隔符
	- NR	指定行
	awk 'BEGIN{FS=","; OFS=" - "} NR > 1{print $2, $3, $8}' all_jobs.csv | head -50
	
	awk 'BEGIN{FS=","; OFS=" - "} NR > 1 {if ($8 == "北京" && $3 >= 40) print $2, $3, $8}' all_jobs.csv
	
	awk 'BEGIN{FS=","; OFS=" - "; print"公司名称", "月薪"} NR > 1 {if ($8 == "北京" && $3 >= 40) print $2, $3, $8}' all_jobs.csv 
	
	awk 'BEGIN{FS=","; OFS="\t"} {total[$8] += 1} END{for (city in total) print city, total[city]}' all_jobs.csv
	
	awk 'BEGIN{FS=","; OFS="\t"; print "城市", "岗 位数量"} NR >1 {total[$8] += 1} END{for (city in total) print city, total[city]}' all_jobs.csv | sort -n -k 2
	
	
	awk 'BEGIN{FS=","; OFS="\t"; print "城市", "平均薪资"} NR >1 {salary[$8] += $3; total[$8] += 1} END{for (city in total) printf "%s\t%.1fK\n", city, salary[city] / total[city]}' all_jobs.csv | sort -n -k 2
	
	awk 'BEGIN{FS=","; OFS="\t"; print "城市", "平均薪资"} NR >1 {if ($6 ~ "数据分析") {salary[$8] += $3; total[$8] += 1}} END{for (city in total) printf "%s\t%.1fK\n", city, salary[city] / total[city]}' all_jobs.csv
	
	

	 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值