磁盘管理
Linux中磁盘管理就是将硬盘通过挂载的方式挂载到linux文件系统中
主要步骤是磁盘分区和挂载
具体步骤如下:
1.关机
2.添加硬盘
2.1 通过lsblk命令查看本机的磁盘
2.2 通过df -h命令查看本机的分区
3.磁盘分区
有两个命令,fdisk和gdisk
-
fdisk:分区2TB以下的磁盘,最多可以分4个分区
-
gdisk:分区2TB以上的磁盘,最多可以分128个分区
n : 新建一个分区
p : 打印分区表
w : 写入磁盘并退出
q : 退出
d : 删除一个分区
磁盘分区创建步骤如下,创建多个分区重复多次即可
[root@localhost ~]# gdisk /dev/sdc
-bash: gdisk: 未找到命令
# 安装gdisk
[root@localhost ~]# yum -y install gdisk
# 再重新执行
[root@localhost ~]# gdisk /dev/sdc
Command (? for help): n
# 选择命令 输入n新建分区
Partition number (1-128, default 1):
# 分区号(1-128)回车键使用默认值
First sector (34-6920601566, default = 2048) or {+-}size{KMGTP}:
# 起始扇区 回车键使用默认值
Last sector (2048-6920601566, default = 6920601566) or {+-}size{KMGTP}: +100G
# last扇区 使用+号来添加
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): w
# w写入磁盘并退出
4.格式化文件系统
[root@localhost ~]# mkfs.xfs /dev/sdc1
5.挂载
[root@localhost ~]# mount /dev/sdc1 /mnt
[root@localhost ~]# df -h
# 使用df -h确认挂载是否成功
awk命令
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
相较于 sed 常常作用于一整个行的处理, awk 则比较倾向 于一行当中分成数个『字段』来处理。
1. awk的语法
awk [参数] [处理规则] [操作对象]
2. 参数
-F :指定文本分隔符(默认是以空格作为分隔符)
案例:打印文本的最后一列
awk -F '{print $NF}' 文件路径
3.awk中的预定义变量
$0 : 代表当前行
[root@localhost ~]# awk -F' ' '{print $0}' 1.txt
# {}里循环打印出每一行的内容
$n :代表第n列
[root@localhost ~]# awk -F' ' '{print $1}' 1.txt
NF :记录当前行的字段数
[root@localhost ~]# awk -F' ' '{print NF}' 1.txt
$NF:最后一列
[root@localhost ~]# awk -F' ' '{print $NF}' 1.txt
NR :用来记录行号
[root@localhost ~]# awk -F' ' '{print NR}' 1.txt
FS :指定文本内容分隔符(默认是空格)
[root@localhost ~]# awk 'BEGIN{FS=":"}{print $NF, $1}' 1.txt
FS 的优先级要高于 -F
OFS :指定打印分隔符(默认空格)
[root@localhost ~]# awk -F: 'BEGIN{OFS=" >>> "}{print $NF, $1}' 1.txt
4.awk处理规则的执行流程
BEGIN{ }
//
{ }
END{ }
5.awk中的函数
打印 | |
---|---|
printf | 格式化打印 |
%s | 字符串 |
%d | 数字 |
- | 左对齐 |
+ | 右对齐 |
15 | 至少占用15字符 |
[root@localhost ~]# awk -F: 'BEGIN{OFS=" | "}{printf "|%+15s|%-15s|\n", $NF,$1}' /etc/passwd
6.awk中的定位
6.1.正则表达式
[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
6.2.比较表达式
> | 大于 |
---|---|
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
~ | 正则匹配 |
!~ | 正则不匹配 |
案例
要求打印属组ID小于属主ID的行
[root@localhost ~]# awk -F: '$4 < $3{print $0}' /etc/passwd
案例:结尾包含nologin
[root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd
案例:结尾不包含nologin
[root@localhost ~]# awk -F: '$NF !~ /bash/{print $0}' /etc/passwd
6.3.逻辑表达式
&& | 逻辑与 |
---|---|
|| | 逻辑或 |
! | 逻辑非 |
案例
[root@localhost ~]# awk -F: '$3 * $4 > 3000 && $3 - $4 < 0{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$3 * $4 > 3000 || $3 - $4 < 0{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '!($3 + $4 > 2000){print $0}' /etc/passwd
6.4.算数表达式
+ | 加 |
---|---|
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
案例
[root@localhost ~]# awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd
6.5.条件表达式
==
>
<
>=
<=
案例:要求打印第五行
[root@localhost ~]# awk -F' ' 'NR == 5{print $0}' 1.txt
6.6.范围表达式
案例:打印以bin开头的行
[root@localhost ~]# awk -F: '/^bin/{print $0}' /etc/passwd
7.流程控制
流程控制只存在于循环中
if
表达式:
if(){}
if(){}else{}
if(){}else if(){}else{}
[root@localhost ~]# awk -F: '{if($3>$4){print $3}else{print $4}}' /etc/passwd
for
表达式:
for(i="初始值";条件判断;游标){}
[root@localhost ~]# awk -F: '{for(i=1;i<10;i++){print $0}}' /etc/passwd
while
表达式:
while(条件判断){}
[root@localhost ~]# awk -F: '{i=1; while(i<10){print $0, i++}}' /etc/passwd