磁盘管理、awk

磁盘管理、awk

image

1、磁盘管理

  • 什么是磁盘管理
    linux系统中,磁盘管理就是将硬盘通过挂载的方式挂载到linux文件系统中。

  • 挂载磁盘的步骤
    1.磁盘分区
    2.挂载

  • 磁盘分区
    linux中的磁盘分区有两种:fdisk、gdisk
    两者特点介绍:
    fdisk:分区2T以下的磁盘,最多可以分为4个分区
    gdisk:分区2T以上的磁盘,最多可以分为128个分区

  • 如何添加一块磁盘
    1、虚拟机关机
    2、编辑虚拟机设置
    image
    3、点击添加
    image
    4、选择硬盘,点击下一步
    image
    5、后续一直下一步即可
    6、查看本机的磁盘
    lsblk
    7、查看本机的分区
    df -h

  • 如何进行磁盘分区
    fdisk [磁盘名称] # 磁盘设备一般是放在/dev目录下
    1、执行分区命令(fdisk/gdisk)
    image
    2、输入m获取分区相关命令
    image
    3、相关命令简介
    n : 新建一个分区
    p :打印分区表
    w : 写入磁盘并退出
    q : 退出
    d : 删除一个分区

    打印分区表
    image
    在linux中,存在一个桶的概念
    桶:存放数据的容器
    image
    4、这里我们选择n新建一个分区
    image
    5、默认p进行分区
    image

    6、选择分区号,设置当前分区的容量
    image
    设置分区容量时,其实就是用到了上面的桶的概念,这里其实是给分区设置桶的数量,通过字节数除以扇区数获得每个桶存放数据的大小,再通过单位换算获得桶的个数
    但是上面的的算法算起来麻烦且繁琐,所以在这里我们直接选择100G就好
    image
    7、w写入磁盘并退出,磁盘分区完成

  • 挂载磁盘分区
    1、查看本机的磁盘
    lsblk
    image
    可以看到我们刚才的sdc的一个分区sdc3
    2、挂载磁盘分区
    在挂载磁盘分区之前先对文件系统进行格式化
    1、格式化文件系统
    mkfs.xfs /dev/sdb1(磁盘分区)
    2、挂载磁盘分区
    mount /dev/sdc3 /mnt
    image

2、linux三剑客之awk

  • awk主要是用来格式化文本的
1、awk命令格式:
	awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' [操作对象]
	 [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
	'  '          引用代码块
	BEGIN	初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
	//	匹配代码块,可以是字符串或正则表达式
	{}	命令代码块,包含一条或多条命令
	;	多条命令使用分号分隔
	END	结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
2、awk的生命周期
	grep、sed及awk都是读一行处理一行,直到处理完成,这种处理文本的方式,大大的减少了机器内存的消耗
	1、接收一行作为输入
	2、把读入进来的文本进行分解
	3、使用处理规则处理文本
	4、输入一行,赋值给$0,直到处理完成
	5、把处理完之后的所有数据交给END{}来再次处理
3、awk语法格式
	awk [参数] [处理规则] [操作对象]
4、awk处理规则的处理流程
	BEGIN{}
	// # 正则表达式
	{} # 函数体代码
	END{}
5、awk中的预定义变量
	$0 : 代表当前行(默认一行一行的进行读取处理)
	# 示例:读取出/etc/passwd里的每一行
	[root@jinx ~]# awk -F: '{print $0,"----"}' /etc/passwd # 一行一行的读取,且每一行后加上'----'符号,更好的去理解awk的处理规则;有一点需要注意的是,外面如果使用单引号,里面就要用双引号,避免引起冲突
	$n :表示第n列
	# 示例:打印出/etc/passwd里的第3列
	[root@jinx ~]# cat /etc/passwd | awk -F: '{print $3}'
	NF :记录当前文件每一行的列数
	# 示例:打印出/etc/passwd文件里每一行的列数
	[root@jinx ~]# cat /etc/passwd | awk -F: '{print NF}'
	注:$NF表示文件的最后一列
	NR :用来记录每一行的行号(实际上是读取一行,记录当前行是读取的第几行,并以数字形式输出)
	# 示例:打印出/etc/passwd文件中每一行在文件中的行号
	[root@jinx ~]# cat /etc/passwd | awk -F: '{print NR}'
	FS :指定文本内容分隔符(默认是空格)
	注:FS的优先级要高于-F
	# 示例:以-F冒号作为分隔,FS以x作为分隔,对/etc/passwd文件进行处理
	[root@jinx ~]# cat /etc/passwd | awk -F: 'BEGIN{FS="x"}{print $NF,$1}'
	OFS :指定打印分隔符(默认空格)
	# 示例:打印出/etc/passwd文件里的第一行和最后一行,并以‘>>>’ 分隔开
	[root@jinx ~]# cat /etc/passwd | awk -F: 'BEGIN{OFS=">>>"}{print $NF,$1}'
6、awk中的函数
	print	: 打印
	printf	:格式化打印
		占位符
			%s	: 字符串
			%d	: 数字
			-	:左对齐
			+	:右对齐
			10	:至少占用10个字符
		# 示例:格式化打印出/etc/passwd文件里的第一行和最后一行,并以‘>>>’ 分隔开,且两列的分隔符在同一垂直水平线上
		[root@jinx ~]# cat /etc/passwd | awk -F: 'BEGIN{OFS=" >>> "}{printf "%+20s >>> %-20s\n",$NF,$1}'
7、awk中的定位
	1、正则表达式
		# 示例:匹配打印出/etc/passwd文件中包含root的行
		[root@jinx ~]# cat /etc/passwd | awk -F: '/root/{print $0}'
	2、比较表达式
		>
		<
		>=
		<=
		~	正则匹配
		!~	正则匹配(取反)
		# 示例1:打印出/etc/passwd文件里属主大于属组的行
		[root@jinx ~]# cat /etc/passwd | awk -F: '$3 > $4{print $0}'
		# 示例2:打印出/etc/passwd文件里结尾包含bash的行
		[root@jinx ~]# cat /etc/passwd | awk -F: '$NF ~/bash/{print $0}'
		# 示例3:打印出/etc/passwd文件里结尾不包含bash的行
		[root@jinx ~]# cat /etc/passwd | awk -F: '$NF !~/bash/{print $0}'
	3、逻辑表达式
		&& : 逻辑与 >>> and
		|| : 逻辑或 >>> or
		!  : 逻辑非 >>> not
		# 示例1:打印出/etc/passwd文件里属组小于1000且属主小于1000的行
		[root@jinx ~]# awk -F: '$4 < 1000 && $3 < 1000{print $0}' /etc/passwd
		# 示例2:打印出/etc/passwd文件里属组小于1000或属主大于1000的行
		[root@jinx ~]# awk -F: '$4 < 1000 || $3 > 1000{print $0}' /etc/passwd
		# 示例3:打印出/etc/passwd文件里属主不大于1000的行
		[root@jinx ~]# awk -F: '!($3 > 1000){print $0}' /etc/passwd
	4、算术表达式(只能对纯数字进行操作)
	+ 加
	- 减
	* 乘
	/ 除
	% 取余
	5、条件表达式
	== 等于
	> 大于
	<= 小于等于
	>= 大于等于
	# 示例:打印出/etc/passwd文件里第5行
	[root@jinx ~]# awk -F: 'NR==5{print $0}' /etc/passwd
	6、范围表达式
	通过限制一个范围来筛选符合条件的数据
	# 示例:打印出/etc/passwd文件里第五行到第十行的数据
	[root@jinx ~]# awk -F: 'NR==5,NR==10{print $0}' /etc/passwd
	7、流程控制
	只存在于循环中
	1、分支流程
	if
	# 示例:只打印出/etc/passwd文件里行数大于10的数据
	[root@jinx ~]# awk -F: '{if (NR > 10){print $0}}' /etc/passwd
	语法结构
		{if (条件){}}
		{if (条件){}else{}}
		{if (条件){}else if(条件){}else{}}
	2、循环流程
		1、for
		# 示例:当for循环条件成立时打印/etc/passwd文件中的每一行
		[root@jinx ~]# awk -F: '{for(i=1;i < 5; i++){print $0}}' /etc/passwd # /etc/passwd文件中的每一行都循环打印4次
		语法结构
			{for(i=初始值;条件判断;i递增或者递减){}}
		2、while
		# 示例1:当while条件成立时打印出/etc/passwd文件里的每一行
		[root@jinx ~]# awk -F: '{i=1;while(i<5){print $0,i++}}' /etc/passwd # /etc/passwd文件中的每一行都循环打印4次
		# 示例2:对/etc/passwd文件里的内容每隔5行打印一行星星
		[root@jinx ~]# awk -F: '{if(NR%5==0){print "* * * * * * * * * * * * * " }print $0}' /etc/passwd

image

posted @ 2021-12-23 00:30  PyLy  阅读(87)  评论(0)    收藏  举报

念两句诗

入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极。
【唐代】李白