Atopos

导航

Linux系统中的磁盘管理与三剑客之awk

1.Linux系统中的磁盘管理

image

1.1概念

image

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

1.2挂载磁盘的步骤

image

1.磁盘分区
2.挂载

1.3磁盘分区的两种工具

image

工具一:
fdisk (用于分区2TB一下的磁盘,最多可以分4个区)
eg:
   fdisk /dev/sdb
工具二:
gdisk (分区2TB以上的磁盘,最多可以分128个分区)不是自带的,需要下载后才能使用(yum install gdisk -y)
eg:
   gdisk /dev/sdb

1.4磁盘分区

image

1.4.1添加一块新磁盘

image

先关机
再添加

1.4.2磁盘分区步骤详细

image

步骤一:
      fdisk /dev/sdb | gdisk /dev/sdb #先使用分区工具
步骤二:
      n: 新建一个分区
步骤三:
      p: 打印分区表
步骤四:
      设置分区容量大小
      eg:+100G
步骤五:
      w: 写入磁盘并退出

相关命令:
        q:退出
        d:删除一个分区
        lsblk:查看本机的磁盘
        df -h:查看本机的分区

1.4.3格式化文件系统

image

关键字:mkfs.xfs
eg:
   mkfs.xfs /dev/sdb1 

1.4.4挂载磁盘

image

关键字:mount
eg:
   mount /dev/sdb1 /mnt

2.三剑客之awk

image

2.1简介

image

awk是用来格式化(处理)文本的

2.2语法结构

image

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

关键字:awk

参数:-F(指定文本分隔符,默认是以空格作为分隔符)
eg:
[root@localhost ~]# awk -F'k' '{print $NF}' 1.txt


2.3 awk的生命周期

image

特性:同grep、sed一样都是读一行处理一行,直至处理完成。
1.接收一行作为输入
2。把刚刚读入进来得到文本进行分解(例如分割符分解)
3.使用处理规则处理文本(例如print等等)
4.输出一行,赋值给$0,直至处理完成
5.把处理完成之后的所有的数据交给END{}来再次处理({}里面是空就不用处理了)

2.4 awk中的预定义变量

image

$:取什么里面的内容
$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处理规则的执行流程

image

BEIG{} 定义变量
//  正则
{}  循环
END{} 在打印之前统一处理一遍
eg:
[root@localhost ~]# awk -F: 'BEGIN{OFS=" | "}{printf "|%-15s|%-15s|\n", $NF,$1}' /etc/passwd

PS:
   1.awk处理规则最多有四个,最少有一个
   2.从上往下执行


2.6 awk中的函数

image

函数一般应用于{}和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中的定位

image

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流程控制

image

流程控制只存在于{}之中

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

image

posted on 2021-12-22 21:13  Atopos_q  阅读(17)  评论(0编辑  收藏  举报