磁盘分区和awk命令

磁盘管理

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{ }

磁盘分区和awk命令

5.awk中的函数

print 打印
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
上一篇:Linux 磁盘管理&&awk 命令


下一篇:磁盘管理+awk