昨日内容回顾

1.用两种方法实现 将文件中以 # 开头的行 把 # 去掉
sed -r 's/^ *#//g' /etc/fstab
cat /etc/fstab | tr -d '^#' 2.将文件中的Hello World 替换成 World Hello
sed -r 's/Hello World/World Hello/g' 1.txt
awk '{print $2,$1}' 1.txt 3.删除一个文本中所有的数字
sed 's/[0-9]//g' 1.txt
cat 1.txt | tr -d [0-9]

今日内容概要

  • 磁盘管理
  • 三剑客之awk初识

磁盘管理

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

# 挂载步骤
1.新建磁盘
01.将虚拟机关机
02.选择 编辑虚拟机设置
03.选择 添加
04.选择 磁盘 一直下一步
05.完成 2.执行分区操作
fdisk : 分区2TB以下的磁盘 最多可以分4个分区
参数:
n : 新建一个分区
p : 打印分区表
w : 写入磁盘并退出
q : 退出
d : 删除一个分区
01.执行 fdisk /dev/sdb 进入分区操作
02.按 n
03.直接 enter 到 Last 扇区, +扇区 or +size{K,M,G}选项
04.手动添加 +100G
05.按 w 保存退出
06.格式化文件系统 mkfs.xfs /dev/sdb1
07.挂载 mount /dev/sdb1 /mnt gdisk : 分区2TB以上的磁盘 最多可以分128个分区
步骤等同于 fdisk # 查看系统磁盘信息
lsblk : 查看本机的磁盘(包含未挂载的)
df -h : 查看本机的分区(仅显示已经挂载的)

三剑客之awk

'''
awk主要是用来格式化输出文本
grep、sed和awk都是读一行处理一行 直至处理完成
''' # 1.语法格式
awk [参数] [处理规则] [操作对象] 参数:
-F : 指定文本的分隔符(不指定的话 默认为 空格)
案例:
awk -F'f' '{print $2}' 1.txt # 显示以 f 分隔后的第二列内容
awk -F '{print $2}' 1.txt # 显示以 空格 分隔后的第二列内容 打印系统所有用户的解析器
awk -F: '{print $NF}' /etc/passwd # 以 :分隔 显示最后一列内容 # 2.awk的生命周期
01. 接收一行内容作为输入
02. 把刚刚接收到的文本进行分解
03. 使用处理规则处理文本
04. 读取一行 赋值给 $0 直至处理完成
05. 把处理完成之后的所有数据 交给 END{} 来再次处理 # 3.awk中的预定义变量
$0 : 代表当前行
案例:
awk -F: '{print $0, "---"}' /etc/passwd # 输出每行内容 并且每行最后会加上 --- $n : 代表第n列(0 除外)
案例:
awk -F: '{print $1}' /etc/passwd # 以 :分隔后 输出第一列内容 NF : 记录当前行的字段数
案例:
awk -F: '{print NF}' /etc/passwd # 输出每一行按 :分隔后的列数 NR : 用来记录行号
案例:
awk -F: '{print NR}' /etc/passwd # 将文本内容替换成行号输出 FS : 指定文本的分隔符(不指定的话 默认为 空格)
案例:
awk 'BEGIN{FS=":"}{print $NF}' /etc/passwd # 以:分隔 输出最后一列内容
等同于 -F 作用
但是如果同时用 以 FS 指定的分隔符优先 OFS : 指定打印分隔符(不指定的话 默认为 空格)
案例:
同时输出不止一项内容时 默认按空格分隔输出显示
awk -F: 'BEGIN{OFS=" >>> "}{print $NF, $1}' /etc/passwd # 输出的最后一列内容 和 第一列内容 中间以 >>> 分隔 # 4.awk处理规则的执行流程
BEGIN{} : 定义变量
// : 正则
{} : 循环
END{} : 输出之前最后再统一处理一次(如果没有出现 就没有任何效果)
'''
在 awk 语法中 至少有一个流程 最多可以同时有四个流程
执行顺序就是从上往下 一次执行
''' # 5.awk中的函数
"""函数只能够写在 循环之中{}"""
print : 打印
printf : 格式化打印
%s : 字符串占位
%d : 数字占位
- : 左对齐
+ : 右对齐
15 : 至少占位15个字符(自由定义) 案例:
awk -F: 'BEGIN{OFS=" | "}{printf "|%s|%s|\n", $NF,$1}' /etc/passwd
# 将文件内容以 | 分隔后 输出最后一列和第一列 并且用 | 分隔显示 显示的内容继续按每行显示(\n 换行) awk -F: 'BEGIN{OFS=" | "}{printf "|%-15s|%-15s|\n", $NF,$1}' /etc/passwd
# 将文件内容以 | 分隔后 输出最后一列和第一列 并且用 | 分隔显示 并且显示的每列内容至少要有15位字符
# 如果当列内容不够占位数 则用空格顶替
# 如果当列内容多余指定占位数 则分隔符移至内容末尾 再继续当前行的下一列
# 6.awk中的定位
01.正则定位
awk -F: '/root/{print $0}' /etc/passwd # 显示文件中含有 root 的所有行 awk -F: '/^root/{print $0}' /etc/passwd # 显示文件中以 root 开头的行 02.比较定位(比较文本内的内容)
> : 大于
< : 小于
>= : 大于等于
<= : 小于等于
~ : 正则匹配(后面跟匹配规则)
!~ : 正则匹配(后面跟匹配规则 但取反) 案例:
打印属组ID大于属主ID的行 passwd文件中以 :分隔 第三列是属主 第四列是属组
awk -F: '$4 > $3{print $0}' /etc/passwd # 以 :分隔 打印大于号比较之后的结果行 打印结尾包含bash的行
awk -F: '$NF ~ /bash/{print $0}' /etc/passwd # 以 :分隔 最后一列进行正则匹配 输出匹配到的行 打印结尾不包含bash的行(取反)
awk -F: '$NF !~ /bash/{print $0}' /etc/passwd # 以 :分隔 最后一列进行正则匹配 输出匹配到的行(匹配到的行都是最后一列 不包含bash的) 03.逻辑定位
&& : 逻辑 与(同时满足前后条件)
|| : 逻辑 或(满足一个条件即可)
! : 逻辑 非(只取不符合条件的)
案例:
awk -F: '$3 + $4 > 100 && $3 * $4 > 200{print $0}' /etc/passwd # 输出 第三列+第四列大于100 且 第三列*第四列大于200 的行 awk -F: '$3 + $4 > 500 || $3 * $4 > 2000{print $0}' /etc/passwd # 输出 第三列+第四列大于500 或者是 第三列*第四列大于2000 的行 awk -F: '!($3 + $4 > 500){print $0}' /etc/passwd # 输出 第三列+第四列不大于500的行(符合条件的都隐藏不打印) 04.算数定位(要保证计算的对象是 纯数字)
+ : 加
- : 减
* : 乘
/ : 除
% : 模(取整除后的 余)
案例:
awk -F: '$3 + $4 > 1000{print $0}' /etc/passwd # 打印属主id 加 属组id的和大于1000的行 awk -F: '$3 * $4 > 2000{print $0}' /etc/passwd # 打印属主id 乘 属组id的和大于2000的行 awk -F: 'NR % 2 == 0{print $0}' /etc/passwd # 打印 行号除2的商为整数(余值是0)的行 就是打印偶数行 awk -F: 'NR % 2 == 1{print $0}' /etc/passwd # 打印 行号除2的商为整数(余值是1)的行 就是打印奇数行 05.条件定位(比较文本内容之外 我们赋予的内容 例如: 行号)
== : 等于
> : 大于
< : 小于
>= : 大于等于
<= : 小于等于
案例:
要求打印第2行内容
awk -F: 'NR == 2{print $0}' /etc/passwd # 打印行号为 2 的行 06.范围定位(开头 结尾 之间用逗号隔开)
awk -F: '/^root/,/^lp/{print $0}' /etc/passwd # 打印 以root开头行 到以lp开头行(打印整个范围) # 7.流程控制
'''只能写在循环{}中'''
if 语法:
if(){}
if(){}else{}
if(){}else if(){}else{}
案例:
awk -F: '{if($3>$4){print "大于"}else{print "小于或等于"}}' /etc/passwd # 输出的行内容为:(如果条件成立)输出大于 (如果条件不成立)输出小于或等于 for 语法:
for(i="初始值";条件判断;游标){}
'''
初始值:循环结束的规则
条件判断:定义循环的起始条件
游标:固定执行规则
''' 案例:
awk -F: '{for(i=10;i>0;i--){print $0}}' /etc/passwd # 文本内容每行打印10遍
'''
i 等于 10 结束循环 但是本次循环执行
i 大于 0 定义循环的起始条件
i++ 每次循环i加1
'''
i 等于 0 打印当前行
i 等于 1 打印当前行
...
i 等于 10 打印当前行 并且 for循环结束 开始读取下一行内容并重新执行 for循环
i 等于 0 打印当前行
i 等于 1 打印当前行
...
i 等于 10 打印当前行 并且 for循环结束
...
一直打印到全部文本内容结束 while 语法:
while(条件判断){} 案例:
awk -F: '{i=0; while(i<10){print $0, i++}}' /etc/passwd # 文本内容每行打印9遍
'''
i 等于 0 定义循环的起始条件
i 等于 10 结束循环 但是本次循环不执行
i++ 每次循环i加1
'''
i 等于 0 打印当前行
i 等于 1 打印当前行
...
i 等于 10 循环结束 当次不执行 开始读取下一行内容并重新执行 while循环
i 等于 0 打印当前行
i 等于 1 打印当前行
...
i 等于 10 循环结束 当次不执行
...
一直打印到全部文本内容结束 # 练习
每隔5行,打印一行横线
awk -F: '{if(NR%5==0){print "----------------"}print $0}' /etc/passwd # 行号整除5的行(余值为0)之后 打印---- 再继续处理后续内容

Linux中磁盘管理与三剑客之awk初识的更多相关文章

  1. linux 系统磁盘管理体系

    目录 linux 系统磁盘管理体系 一.磁盘的基本概念 二.磁盘的内部结构 三.磁盘的外部结构 四.磁盘的接口及类型 五.fdisk磁盘分区实践 六.gdisk 分区 七.parted 高级分区工具. ...

  2. LINUX的磁盘管理du命令详解

    LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...

  3. 深入理解Linux中内存管理

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

  4. Linux命令——磁盘管理

    Linux命令--磁盘管理 命令df 作用:查看已挂载磁盘的总容量.使用容量.剩余容量等 参数:-i,查看inodes的使用状况 参数:-h,使用合适的单位显示(推荐) 命令du 作用:查看某个目录或 ...

  5. centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课

    centos Linux下磁盘管理   parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...

  6. Linux下磁盘管理命令df与du

    Linux下磁盘管理命令df与du  对磁盘进行查看和控制的两个linux命令,df和du.  一.du命令 首先看一下du的help说明: [root@misdwh opt]# du --help ...

  7. Linux RAID 磁盘管理

    Linux RAID 磁盘管理 RAID工作模式介绍:https://www.cnblogs.com/xiangsikai/p/8441440.html 本章主要讲解 Linux下 RAID5 与 R ...

  8. Linux命令-磁盘管理(二)

    Linux命令-磁盘管理(二) Linux mmount命令 Linux mmount命令用于挂入MS-DOS文件系统. mmount为mtools工具指令,可根据[mount参数]中的设置,将磁盘内 ...

  9. Linux命令-磁盘管理(一)

    Linux命令-磁盘管理(一) Linux cd命令 Linux cd命令用于切换当前工作目录至 dirName(目录参数). 其中 dirName 表示法可为绝对路径或相对路径.若目录名称省略,则变 ...

随机推荐

  1. setoolkit的钓鱼实验

    1.在kali中打开setoolkit 2.在菜单中选择第一个进入社会工程学攻击 3.选择第二个模块属于网站攻击向量 4.选择第五个模块,进行web劫持攻击 5.选择第二个,进行网站克隆 6.发现访问 ...

  2. 让HTML5游戏来的更猛烈些吧!--青岛思途

    作为著名的网页游戏门户,Kongregate在业界也算是鼎鼎大名了.小编与它的初识应是在几年前,只记得当时其平台上的游戏基本都是需要Flash的支持,可前几天,Adobe宣布计划停止Flash的更新和 ...

  3. [省选联考 2021 A 卷] 矩阵游戏

    很巧妙的一个构造. 我是没有想到的. 自己的思维能力可能还是不足. 考虑先满足\(b\)对\(a\)的限制,把\(a\)的第一行和第一列设\(0\),推出这个\(a\). 接下来考虑对这个\(a\), ...

  4. 【AGC052A】

    题目 \(有T组询问\) \(每次给一个n\) \(3个01串\),\(这三个串每个都有n个0\),\(n个1\),\(求一个2*n + 1的字符串\),\(使他成为S1+S1,S2+S2,S3+S3 ...

  5. LR SP PC

    LR SP PC 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益. 1.堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种 ...

  6. OpenSSH 密码和公钥认证原理探究

    目录 配置和保护SSH H3 - 使用SSH 访问远程命令行 H4 - 什么是OpenSSH ? H4 - 登录方式: H4 - 登录并执行临时命令: H4 - 查看登录用户 H4 - 登录原理 密码 ...

  7. flink01--------1.flink简介 2.flink安装 3. flink提交任务的2种方式 4. 4flink的快速入门 5.source 6 常用算子(keyBy,max/min,maxBy/minBy,connect,union,split+select)

    1. flink简介 1.1 什么是flink Apache Flink是一个分布式大数据处理引擎,可以对有限数据流(如离线数据)和无限流数据及逆行有状态计算(不太懂).可以部署在各种集群环境,对各种 ...

  8. 大数据学习day32-----spark12-----1. sparkstreaming(1.1简介,1.2 sparkstreaming入门程序(统计单词个数,updateStageByKey的用法,1.3 SparkStreaming整合Kafka,1.4 SparkStreaming获取KafkaRDD的偏移量,并将偏移量写入kafka中)

    1. Spark Streaming 1.1 简介(来源:spark官网介绍) Spark Streaming是Spark Core API的扩展,其是支持可伸缩.高吞吐量.容错的实时数据流处理.Sp ...

  9. 商业爬虫学习笔记day2

    1. get传参 (1)url中包含中文报错解决方法 urllib.request.quote("包含中文的url", safe = "string.printtable ...

  10. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(三)-SD卡的操作流程

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...