1、处理海量数据之grep命令
- grep应用场景:通常对数据进行 行的提取
- 语法:grep [选项]...[内容]...[file]
-v #对内容进行取反提取 -n #对提取的内容显示行号 -w #精确匹配 -i #忽略大小写 ^ #匹配开头行首 语法格式: grep '^n内容' 文件位置,匹配到对应的一行的行首内容 -E #正则匹配
grep -E '内容1|内容2|内容3' 文件位置
引号内容 可以为其他正则表达式
grep -v -n -E -w -i '^' file
2、处理海量数据之cut命令
- cut应用场景:通常对数据进行列的提取
- 语法:cut [选项]...[file]
-d #指定分割符 -f #指定截取区域 -c #以字符为单位进行分割 注意:不加-d选项,默认为制表符,不是空格 /bin/bash #代表可以登录的用户 /sbin/nologin #代表不可以登录的用户 -d与-f: eg:以':'为分隔符,截取出/etc/passwd的第一列跟第三列 cut -d ':' -f 1,3 /etc/passwd cut -d ':' -f 1,3 /etc/passwd | grep 'root' eg:以':'为分隔符,截取出/etc/passwd的第一列到第三列 cut -d ':' -f 1-3 /etc/passwd eg:以':'为分隔符,截取出/etc/passwd的第二列到最后一列 cut -d ':' -f 2- /etc/passwd -c: eg:截取/etc/passwd文件从第二个字符到第九个字符 cut -c 2-9 /etc/passwd
3、处理海量数据之awk命令
- awk的应用场景:通常对数据进行列的提取
- 语法:
awk '条件 {执行动作}'文件名 awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名 或awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
- 特殊要点与举例说明:
printf #格式化输出,不会自动换行。 (%ns:字符串型,n代表有多少个字符; %ni:整型,n代表输出几个数字; %.nf:浮点型,n代表的是小数点后有多少个小数 ) print #打印出内容,默认会自动换行 \t #制表符 \n #换行符 eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6 eg:df -h |grep /dev/vda1 | awk '{printf "/dev/vda1的使用率是:"} {print $5 }' 小数:echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f\n", $0}' $1 #代表第一列 $2 #代表第二列 $0 #代表一整行 eg: df -h | grep /dev/vda1 | awk '{print $5}' -F #指定分割符 eg:cat /etc/passwd | awk -F":" '{print $1}' BEGIN #在读取所有行内容前就开始执行,常常被用于修改内置变量的值 FS #BEGIN时定义分割符 eg:cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}' END #结束的时候 执行 NR #行号 eg:df -h | awk 'NR==2 {print $5}' awk '(NR>=20 && NR<=30) {print $1}' /etc/passwd
第一行显示了当前时间、系统的运行时间、
下一行显示了CPU的概要信息。
top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待) 将CPU分成几类输出
紧跟其后的两行说明了系统内存的状态
第一行说明的是系统的物理内存 :总共有多少内存,当前用多少,还有多少空闲。
最后的是系统的交换内存。
PID 进程ID
USER 进程属主的名字
PR 进程的优先级
NI 进程的谦让度
VIRT 进程占用的虚拟内存总量
RES 进程占用的物理内存总量
SHR 进程和其他进程共享的内存总量
S 进程的状态
%CPU 进程使用的CPU时间比例
%MEM 进程使用的内存占可用内存的比例
TIME+自进程启动到目前为止的cpu时间总量
COMMAND 进程所对应的命令行名称,也就是启动的程序名
结束进程:
kill
1 挂起
2 中断
3 结束运行
9 无条件终止
11段错误
15 尽可能终止
17 无条件停止运行,但不终止
18 停止或者暂停,但是继续在后台运行
19 在STOP或 TSTP之后恢复
KILLALL
支持进程名来结束进程也支持通配符
killall http*
mount
mount命令会输出当前系统上挂载的设备列表
-a 挂载/etc/fstab文件中指定的所有文件系统
-f 使用mount命令挂载设备,但并真的挂载
-v 详细模式,将会说明挂载设备的每一步
-n 挂载设备,但不注册到/etc/mtab已挂载的设备文件中
-o 参数允许在挂载文件系统时添加一些亦逗号分隔的额外选项
ro 以只读形式挂载
rw 以写形式挂载
user 允许普通用户挂载文件系统
loop 挂载一个文件
umount
umount [dir] device
df
(磁盘空间)
-h 以用户可读的形式展现出来
-M 以MB的形式展现出来
du
du可以显示特定的目录的磁盘空间
-c 显示所有已列出文件总的大小
-h 按照用户容易读的格式输出大小 加目录名称 可显示对应目录的磁盘使用情况
-s 显示每个输出参数的总计
sort 命令
sort -n 3.txt
-n 将数字识别成字符
-M 按照月份排序
-k --key=pos1[,pos2] 排序从pos1位置开始;如果指定了pos2的话,到pos2位置结束。
-t 指定一个用来区分键位置的字符
-r 反序排序
eg:
sort -t ':' -k 3 -n /etc/passwd
压缩数据
gzip
gzip
也是一个压缩命令,跟 zip
类似,是对文件进行压缩。
注意:
gzip
命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。- 压缩后会删除源文件。
- 压缩后文件的后缀格式是
.gz
。 - 该命令还支持解压缩。
- 该命令不需要指定压缩包名。
-d 解压
-v 显示压缩过程
-l 查看压缩包内容
tar
语法格式:
tar [-cxtzjvfpPN] File
or
directory
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名!不要再加参数!例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
eg:
# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息: