磁盘管理+awk

1.磁盘管理

1.1磁盘挂载的步骤

1.11磁盘分区类型

fdisk:
	分区2TB以下的磁盘
		不是绝对(分区2TB以下的稳定)
	最多可以分4个区
gdisk:
	分区任意大小磁盘
	最多可以分128个区

1.12添加磁盘

lsblk	:查看本机磁盘
df -h	:查看磁盘用量

编辑虚拟机设置,添加,硬盘,下一步,调整磁盘大小,完成

1.编辑虚拟机

磁盘管理+awk

2.添加

磁盘管理+awk

3.磁盘类型

磁盘管理+awk

4.选择磁盘

磁盘管理+awk

5.调整大小

磁盘管理+awk

6.命名

磁盘管理+awk

7.添加完成

磁盘管理+awk

8.查看磁盘

磁盘管理+awk

1.14磁盘分区

cd /dev/	:磁盘位置

fdisk /dev/adb	:进入磁盘管理分区

	m	:查看帮助
	n	:创建新分区
	p	:打印分区表
	w	:写入磁盘并退出
	q	:退出
	d	:删除一个分区

桶的概念:即扇区
	磁盘中储存的内容并不是保存到硬盘中,而是储存到桶(扇区)中

磁盘分区过程

磁盘管理+awk

磁盘管理+awk

磁盘管理+awk

磁盘管理+awk

1.15挂载磁盘分区

格式化文件系统
	mkfs.xfs /dev/sdb/sdb1
挂载磁盘
	mount /dev/sdb1 /mnt

1.16总结

1.光机
2.添加硬盘
3.创建分区
	fdisk /dev/sdb
4.格式化文件系统
	mkfs.xfs /dev/sdb1
5.挂载
	mount /dev/sdb1 /mnt

gdisk

不是linux自带的,需要安装
	yum install gdisk -y

之后跟上一样

linux三剑客之awk

awk相当于一门编程语言
主要用于处理文本(格式化文本)
支持变量,支持循环等

awk语法

awk [参数] [处理规则] [操作对象]

awk参数

-F:
	指定文本分隔符(默认空格为分隔符)
		awk '{print $NF}' 路径
			分割文本默认空格为分隔符,打印出文本列数即最后一列
		awk -F: '{print $NF}' /etc/passwd
			分割文本以:为分隔符,打印出最后一列内容

磁盘管理+awk

awk生命周期

grep sed awk都是读文本文件一行内容处理一行内容,直到处理完成为止

1.接收一行作为输入
2.读入进来的一行文本进行分解(即参数,入:-F分隔符)
3.使用‘处理规则’处理文本
4.输出一行,赋值给$0($0相当于变量名即处理完成的一行文本内容)直至处理完成为止
5.处理完成所有的数据后交给END{}再次处理

awk中的预定义变量

$0

代表当行
	awk -F: '{print ">>>", $0 , "<<<"}' /etc/passwd
		将每行内容分割之后交给$0,并打印出来,拼接内容需要 "" 双引号,不与最外层的 '' 单引号冲突

磁盘管理+awk

$n

代表第n列
	awk -F: '{print ">>>", $3, "<<<"}' /etc/passwd
		打印出第三列内容

磁盘管理+awk

NF

记录当前‘行’列的个数
	注:每行的列数可能会不同
	
	awk -F: '{print ">>>", NF, "<<<"}' /etc/passwd

磁盘管理+awk

NR

记录行号(不是文本内的行号)
	awk -F: '{print ">>>", NR, "<<<"}' /etc/passwd

磁盘管理+awk

FS

指定文本内容分隔符(默认空格)
与-F更能相同
FS的优先级大于-F
	awk 'BEGIN{FS=":"}{print $3}' /etc/passwd

磁盘管理+awk

OFS

指定打印分隔符即显示出来的内容(默认空格)
	awk -F: 'BEGIN{OFS="-_-"}{print ">>>", $3, "<<<"}' /etc/passwd
		拼接时分隔符默认为空格,只用OPS可以改变分隔符

磁盘管理+awk

awk处理规则的执行流程

BEGIN{}
	变量
//
	正则匹配
{}
	循环
END
	上面执行完毕后统一执行
	即先执行BEGIN,然后正则,然后循环

awk中的函数

print
	打印

printf
	格式化打印(类似占位符)
	%s	:字符串
	%d	:数字
	-	:左对齐
	+	:右对齐
	n	:至少占用n个字符
	
	awk -F: '{printf "|%-20s|%+20s|\n", $1, $3}' /etc/passwd

磁盘管理+awk

awk中的定位

正则表达式

awk -F: '/root/{print $0}'
	打印出包含root的行
awk -F: 'BEGIN{OFS="|"}/root/{print $1,2,3,4,5,6,7}' /etc/passwd
	打印出包含root的行并且调整输出内容

磁盘管理+awk

计较表达式

匹配文本内的内容进行计较
	>	:大于
	<	:小于
	>=	:大于等于
	<=	:小于等于
	~	:包含
	!~	:不包含

> :大于

awk -F: '$4 > $3{print $0}' /etc/passwd
	打印出第四列大于第三列的行

磁盘管理+awk

< :小于

awk -F: '$4 > $3{print $0}' /etc/passwd
	打印出第四列小于第三列的行

磁盘管理+awk

~ :包含

awk -F: '$0 ~/root/ {print $0}' /etc/passwd
	打印出包含root的行

磁盘管理+awk

!~ :不包含

awk -F: '$0 !~/root/ {print $0}' /etc/passwd
	打印出不包含root的行

磁盘管理+awk

逻辑表达式

&& :逻辑与

awk -F: '$3 + $4 > 1000 && $3 * $4 > 2000{print $0}' /etc/passwd
	and的意思

磁盘管理+awk

|| :逻辑与

awk -F: '$3 + $4 > 1000 || $3 * $4 > 2000{print $0}' /etc/passwd
	or的意思

磁盘管理+awk

! :逻辑非

awk -F: '!($3 + $4 > 2000) {print $0}'
	取反,即打印出不符合这个条件的
		注:括号的添加

磁盘管理+awk

算数表达式

	+
	-
	*
	/	:取整
	%	:取模(取余数)
即分割出来可以计算的列,然后通过计算得到需要的值,然后打印

% :取模

awk -F: 'NR % 2 == 0{print $0}'
	打印出偶数的行
awk -F: 'NR % 2 == 1{print $0}'
	打印出奇数的行

磁盘管理+awk

条件表达式

匹配文本外的内容
	==
	>
	<
	>=
	<=

==

awk -F: 'NR == 3 {print $0}' /etc/passwd
	打印出第三行的内容

磁盘管理+awk

范围表达式

awk -F: '/^root/,/^ftp/{print $0}' /etc/passwd
	打印出通过正则匹配出来的行

磁盘管理+awk

awk中的流程控制

流程控制值存在循环之中
	{}
	if		:判断
		if(判断条件){游标(怎么处理)}	:单分支
		{if(判断条件){游标}else{游标}}	:双分支
		{if(){}else{} if(){}else{}}	:多分支
	for		:循环
		{for(i="初始值";条件判断;游标(怎么处理)){}}
	while		:循环
		{while(条件判断){}}

if判断

if :判断双分支
awk -F: '{if($3>$4){print "大于"$3}else{print"小于或等于",$4}}' /etc/passwd
	打印出达到的结果
awk -F: '{if($3>$4){print $3}else{print"小于或等于",$4}{print "666"}}' /etc/passwd
	

磁盘管理+awk
磁盘管理+awk

if判断单分支
awk -F: '{if($4 >$3){print $0}}' /etc/passwd

磁盘管理+awk

if判断多分支
awk -F: '{if($3>$4){print "3>4"}else{print "3<4"}if($3==$4){print "=="}}' /etc/passwd

磁盘管理+awk

for

{for(i="初始值";条件判断;游标(怎么处理)){}}
	i="初始值"	:初始计数器
	条件判断	:判断计数器是否到达停止条件
	游标	:初始计数器每次循环计算
for循环
awk -F: '{for(i=1;i<=10;i++){print $1}}' /etc/passwd
	打印10次第一列

磁盘管理+awk

while

{i="初始值";while(条件判断){输出内容;游标}}
while循环
awk -F: '{i="0";while(i<5){print "11",$1;i++}}' /etc/passwd

磁盘管理+awk

案例

打印系统解析器

awk -F: '{print $NF}' /etc/passwd
	# 最后一列

磁盘管理+awk

每隔五行打印一条横线

awk -F: '{if(NR%5==0){print "---"}print $0}'
	# 判断行数是否可以整除5,可就打印---,

磁盘管理+awk

上一篇:磁盘分区和awk命令


下一篇:Shell-基本正则