1.Linux系统中的磁盘管理
1.1概念
Linux系统中磁盘管理就是将硬盘通过挂载的方式挂载到linux文件系统中。
1.2挂载磁盘的步骤
1.磁盘分区
2.挂载
1.3磁盘分区的两种工具
工具一:
fdisk (用于分区2TB一下的磁盘,最多可以分4个区)
eg:
fdisk /dev/sdb
工具二:
gdisk (分区2TB以上的磁盘,最多可以分128个分区)不是自带的,需要下载后才能使用(yum install gdisk -y)
eg:
gdisk /dev/sdb
1.4磁盘分区
1.4.1添加一块新磁盘
先关机
再添加
1.4.2磁盘分区步骤详细
步骤一:
fdisk /dev/sdb | gdisk /dev/sdb #先使用分区工具
步骤二:
n: 新建一个分区
步骤三:
p: 打印分区表
步骤四:
设置分区容量大小
eg:+100G
步骤五:
w: 写入磁盘并退出
相关命令:
q:退出
d:删除一个分区
lsblk:查看本机的磁盘
df -h:查看本机的分区
1.4.3格式化文件系统
关键字:mkfs.xfs
eg:
mkfs.xfs /dev/sdb1
1.4.4挂载磁盘
关键字:mount
eg:
mount /dev/sdb1 /mnt
2.三剑客之awk
2.1简介
awk是用来格式化(处理)文本的
2.2语法结构
awk [参数] [处理规则] [操作对象]
关键字:awk
参数:-F(指定文本分隔符,默认是以空格作为分隔符)
eg:
[root@localhost ~]# awk -F'k' '{print $NF}' 1.txt
2.3 awk的生命周期
特性:同grep、sed一样都是读一行处理一行,直至处理完成。
1.接收一行作为输入
2。把刚刚读入进来得到文本进行分解(例如分割符分解)
3.使用处理规则处理文本(例如print等等)
4.输出一行,赋值给$0,直至处理完成
5.把处理完成之后的所有的数据交给END{}来再次处理({}里面是空就不用处理了)
2.4 awk中的预定义变量
$:取什么里面的内容
$0 :代表当前行(整行)
[root@localhost ~]# awk -F':' '{print $0,"------"}' /etc/passwd
$n :代表第n列
eg:
[root@localhost ~]# awk -F':' '{print $2}' /etc/passwd
NF :记录当前行的字段数
eg:
[root@localhost ~]# awk -F':' '{print NF}' /etc/passwd
eg:取(打印)最后一列的内容
[root@localhost ~]# awk -F':' '{print $NF}' /etc/passwd
NR :用来记录行号的
eg:
[root@localhost ~]# awk -F':' '{print NR}' /etc/passwd
FS :指定文本内容分隔符,默认是空格
eg:
[root@localhost ~]# awk 'BEGIN{FS=":"}{print $1,$NF}' /etc/passwd
OFS :指定打印(输出的内容)分隔符,默认是空格
eg:
[root@localhost ~]# awk -F':' 'BEGIN{OFS=">>>"}{print $NF,$1}' /etc/passwd
PS:
FS的优先级要高于-F
2.5awk处理规则的执行流程
BEIG{} 定义变量
// 正则
{} 循环
END{} 在打印之前统一处理一遍
eg:
[root@localhost ~]# awk -F: 'BEGIN{OFS=" | "}{printf "|%-15s|%-15s|\n", $NF,$1}' /etc/passwd
PS:
1.awk处理规则最多有四个,最少有一个
2.从上往下执行
2.6 awk中的函数
函数一般应用于{}和END{}里
函数1:
print:打印
函数2:
printf:格式化打印
函数3:
%s:字符串
函数4:
%d:数字
函数5:
-:左对齐
函数6:
+:右对齐
15:至少占用15个字符(超出会溢出)
eg:
[root@localhost ~]# awk -F: 'BEGIN{OFS=" | "}{printf "|%-15s|%-15s|\n", $NF,$1}' /etc/passwd
2.7awk中的定位
1.正则表达式
[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root|ROOT/{print $0}' /etc/passwd # 忽略大小写
2.比较表达式
符号:
>
<
>=
<=
~ 正则匹配(包含)
!~ 正则匹配(否定的匹配)
eg:打印数组ID大于属主的ID的行
[root@localhost ~]# awk -F: '$4 > $3{print $0}' /etc/passwd
eg:打印结尾包含bash的行
[root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd
eg:打印结尾不包含bash的行
[root@localhost ~]# awk -F: '$NF !~ /bash/{print $0}' /etc/passwd
PS:
匹配的是文本之内的内容
3.逻辑表达式
符号:
&& 逻辑与
|| 逻辑或
! 逻辑非
eg:
[root@localhost ~]# awk -F: '$3 + $4 > 2000 && $3 * $4 > 2000{print $0}' /etc/passwd
eg:
[root@localhost ~]# awk -F: '$3 + $4 > 2000 || * $4 > 2000{print $0}' /etc/passwd
eg:
[root@localhost ~]# awk -F: '!($3 + $4 > 2000){print $0}' /etc/passw
4.算术表达式
符号:
+
-
*
/
%
eg:打印属主+数组的ID大于2000的行
[root@localhost ~]# awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd
eg:打印属主*数组的ID大于2000的行
[root@localhost ~]# awk -F: '$3 + $4 * 2000{print $0}' /etc/passwd
eg:打印偶数行
[root@localhost ~]# awk -F: 'NR % 2 == 0{print $0}' /etc/passwd
eg:打印奇数行
[root@localhost ~]# awk -F: 'NR % 2 == 1{print $0}' /etc/passwd
5.条件表达式
符号:
==
>
<
>=
<=
eg: 打印第三行内容
[root@localhost ~]# awk -F: 'NR == 3{print $0}' /etc/passwd
PS:
匹配的是文本之外的内容
6.范围表达式
eg:打印root开头到以ftp开头的行
[root@localhost ~]# awk -F: '/^root/,/^ftp/{print $0}' /etc/passwd
2.8流程控制
流程控制只存在于{}之中
if
格式:
if(){} 单分支
if(){}else{} 双分支
if(){}else if(){}else{} 多分支
eg:
[root@localhost ~]# awk -F: '{if($3 > $4){print "大于"}else{print "小于"}}' /etc/passwd
for
格式:
for(i="初始值";条件判断;游标){}
i:变量
游标:每次处理变量
eg:
[root@localhost ~]# awk -F: '{for(i=10;i>0;i--){print $0}}' /etc/passwd
while
格式:while(条件判断){}
eg:
[root@localhost ~]# awk -F: '{i=1;while(i<10){print $0, i++}}' /etc/passwd
eg:每隔五行打印一行横线
[root@localhost ~]# awk -F: '{if(NR%5==0){print "-------"}print $0}' /etc/passwd