磁盘分区 & Linux 三剑客之 awk
今日内容
- 磁盘分区
- Linux 三剑客之 awk
内容详细
一、磁盘分区
磁盘分区 --> 挂载
步骤
1、关机
2、添加硬盘
3、创建分区
fdisk /dev/sdb
or
gdisk /dev/sdb
4、格式化文件系统
mkfs.xfs /dev/sdb1
5、挂载
mount /dev/sdb1 /mnt
1、查看磁盘
磁盘目录
/dev --> cdrom、sdb、sdc
[root@localhost ~]# ls /dev
查看本机的磁盘
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 512M 0 part /boot
└─sda2 8:2 0 99.5G 0 part
└─centos-root 253:0 0 99.5G 0 lvm /
sdb 8:16 0 200G 0 disk
├─sdb1 8:17 0 50G 0 part
└─sdb2 8:18 0 100G 0 part
sdc 8:32 0 3.9T 0 disk
sr0 11:0 1 4.4G 0 rom
查看本机的分区
df -h
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
2、磁盘分区命令
fdisk : 分区2TB以下的磁盘,最多可以分4个分区
fdisk [磁盘路径(操作对象)]
1、fdisk [磁盘目录]
2、n : 新建一个分区
3、p : 打印分区表
4、w : 写入磁盘并退出
q : 退出
d : 删除一个分区
例子:
1、输入分区命令
[root@localhost ~]# fdisk /dev/sdb
2、选择新建分区
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free) < -- 这里可以看到还剩余多少个分区可创建
e extended
3、默认打印
Select (default p):
Using default response p
Partition number (3,4, default 3):
4、第一个不输入,第二个输入分区的大小( + 分区大小)
First sector (314574848-419430399, default 314574848):
Using default value 314574848
Last sector, +sectors or +size{K,M,G} (314574848-419430399, default 419430399): +10G
Partition 3 of type Linux and of size 10 GiB is set
4、写入并退出
Command (m for help): w
The partition table has been altered!
输入 m 可以查看 fdisk 中所有的命令
gdisk :分区2TB以上的磁盘,最多可以分128个分区
与上述 fdisk 的磁盘分区操作步骤 几乎 一致
3、格式化文件系统
格式命令
mkfs.xfs [磁盘路径]
[root@localhost ~]# mkfs.xfs /dev/sdb3
meta-data=/dev/sdb3 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4、挂载
命令
mount [磁盘路径] [挂载母鹿]
[root@localhost ~]# mount /dev/sdb3 /mnt
5、检查是否挂载
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.6M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 2.1G 98G 3% /
/dev/sda1 509M 132M 378M 26% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb3 10G 33M 10G 1% /mnt < -- 挂载成功!
三、Linux 三剑客之 awk
awk 的作用主要式格式化文本
1、语法格式
命令书写格式
awk [参数] [处理规则] [操作对象]
参数:
-F : 指定文本内容的分隔符(输出之前指定)
# 指定 passwd 文件中内容的分隔符为 :
打印最后一列
awk -F: '{print $NF}' /etc/passwd
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
2、awk 的生命周期
注意 : awk 对文本的处理是一行一行进行处理的,直至处理完成,grep 和 sed 也是如此
1、接收一行文本内容作为输入
2、对刚进来的文本内容进行分解
3、根据处理规则处理文本
4、把处理结果赋值给 $0,直至处理完成
5、把处理完之后的所有数据交给END{}来再次处理
3、awk 中的预定义变量
提前知道 : {} 是循环的意思
$0 : 代表当前行
[root@localhost ~]# awk -F: '{print $0, "---"}' /etc/passwd
root:x:0:0:root:/root:/bin/bash --- < -- '当前行'后面都打印了 '---'
bin:x:1:1:bin:/bin:/sbin/nologin ---
daemon:x:2:2:daemon:/sbin:/sbin/nologin ---
adm:x:3:4:adm:/var/adm:/sbin/nologin ---
$n : 代表第 n 列
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root < -- 打印了第一列的内容
bin
daemon
adm
lp
sync
NF : 记录当前行的字段数(列数)
[root@localhost ~]# awk -F: '{print NF}' /etc/passwd
7 < -- 打印每一行的列数(字段数)
7
7
7
NR :记录当前的行数(行号)
[root@localhost ~]# awk -F: '{print NR}' /etc/passwd
1
2
3
4
5
6 < -- 记录每一行的行号
FS : 指定文本内容的分隔符,默认是空格(输出之前,将文本原有的内容分隔)
[root@localhost ~]# awk -F: 'BEGIN{FS="x"}{print $NF}' /etc/passwd
:0:0:root:/root:/bin/bash
:1:1:bin:/bin:/sbin/nologin
:2:2:daemon:/sbin:/sbin/nologin
:3:4:adm:/var/adm:/sbin/nologin
# FS 的优先级比 -F 的大,优先执行 FS
OFS : 指定打印(输出)文本内容的分隔符,默认是空格
打印第一列和第二列,打印时用 ~~ 分隔开
[root@localhost ~]# awk -F: 'BEGIN{OFS=" ~~ "}{print $NF,$1}' /etc/passwd
/bin/bash ~~ root
/sbin/nologin ~~ bin
/sbin/nologin ~~ daemon
/sbin/nologin ~~ adm
/sbin/nologin ~~ lp
/bin/sync ~~ sync
4、awk 处理规则的执行流程
BEGIN{ }
在执行循环体函数处理文本之前
可以在 BEGIN{ } 里面先定义变量
如 : FS OFS
先指定文本内容的分隔符和输出文本的分隔符
/ /
定位文本
书写正则表达式定位文本内容再做文本处理
{ }
循环
大括号内的处理操作会循环执行
END{ }
文本处理结束之后会统一把数据交由END{}再次处理
5、awk 中的函数
打印处理后的文本内容
printf
格式化打印
%s
字符串占位
%d
数字占位
占位符中的 左对齐,加数字组合使用,表示占据多少字节
占位符中的 右对齐,加数字组合使用,表示占据多少字节
例子
# 用 : 号 分隔 passwd 文件中的内容,
# 格式化打印分隔后的第一列和最后一列,
# 每列占用15字节,
# 输出的内容用 | 管道符分隔
awk -F: '{printf"|%-15s|%-15s|\n",$1,$NF}' /etc/passwd
[root@localhost ~]# awk -F: '{printf"|%-15s|%-15s|\n",$1,$NF}' /etc/passwd
|root |/bin/bash |
|bin |/sbin/nologin |
|daemon |/sbin/nologin |
|adm |/sbin/nologin |
|lp |/sbin/nologin |
6、awk 中的定位
1、正则表达式
# 正则使用 / / 符号来匹配
例子:
1、打印 passwd 文件中含有 root 的行
awk -F: '/root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
2、打印以 root 开头的行
awk -F: '/^root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
3、打印第一列不包含 root 的行
awk -F: '$1 !~ /root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$1 !~ /root/{print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
2、比较表达式
比较符号:
>
<
=
>=
<=
~ : 包含,一般与正则表达式一起使用
!~ : 不包含
例子:
打印所属主id 与 所属组id 相加小于1000的行
[root@localhost ~]# awk -F: '($3 + $4 < 1000){print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
3、逻辑表达式
符号:
&& : 逻辑与
|| : 逻辑或
! : 逻辑非
例子:
[root@localhost ~]# awk -F: '$3 + $4 > 10 && $3 * $4 < 1000{print $0}' /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
打印所属主id 与 所属组id 相加大于1000的行
[root@localhost ~]# awk -F: '!($3 + $4 < 1000){print $0}' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
4、算术表达式
符号:
+
-
*
/ : 除以
== : 等于
% : 取余数
例子:
1、打印行数是奇数的行
awk -F: 'NR % 2 == 1{print $0}' /etc/passwd
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR % 2 == 1{print $0}'
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin < -- 行号都是奇数
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
2、打印行数是偶数数的行
cat -n /etc/passwd | awk -F: 'NR % 2 == 0{print $0}'
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR % 2 == 0{print $0}'
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
8 halt:x:7:0:halt:/sbin:/sbin/halt
5、条件表达式
符号 : (与比较表达式相似)
==
>
<
>=
<=
例子:
1、打印第 5 行与第 7 行
cat -n /etc/passwd | awk -F: 'NR == 5 || NR == 7{print $0}'
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR == 5 || NR == 7{print $0}'
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
6、范围表达式
类似于 sed 的定位
例子:
1、打印以 root 开头的行到以 adm 开头的行
awk -F: '/^root/,/^adm/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/,/^adm/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
8、流程控制
注意: 流程控制只存在循环之中
if
1、单分支 : {if(判断条件){输出结果}}
2、二分支 : {if(判断条件){输出结果}else{}}
例子:
如果所属主id 与属组id 相加大于1000,输出 big, 否则输出 small
awk -F: '{if($3 + $4 > 1000){print "big"}else{print "small"}}' /etc/passwd
[root@localhost ~]# awk -F: '{if($3 + $4 > 1000){print "big"}else{print "small"}}' /etc/passwd
small
small
big
small
small
3、多分支 : {if(){}else if{}else{}}
for
{for(i="初始值";判断条件;游标){}}
例子:
每行打印前 2 次
awk -F: '{for(i=0;i<5;i++){print $0}}' /etc/passwd
[root@localhost ~]# awk -F: '{for(i=0;i<2;i++){print $0}}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
while
{while(判断条件){}}
例子:
每行打印两遍
[root@localhost ~]# cat -n /etc/passwd | awk -F: '{i=1;while(i<3){print $0, i++}}'
1 root:x:0:0:root:/root:/bin/bash 1
1 root:x:0:0:root:/root:/bin/bash 2
2 bin:x:1:1:bin:/bin:/sbin/nologin 1
2 bin:x:1:1:bin:/bin:/sbin/nologin 2
打印前 5 行
[root@localhost ~]# cat -n /etc/passwd | awk -F: 'NR < 6{print $0}'
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
每隔 5 行 打印一次横线
每隔 5 行 打印一次横线
[root@localhost ~]# awk -F: '{if(NR % 5 == 0){print "-----------"}print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
-----------
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
-----------
磁盘分区 & Linux 三剑客之 awk的更多相关文章
- Linux实战教学笔记18:linux三剑客之awk精讲
Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...
- (转)不看绝对后悔的Linux三剑客之awk实战精讲
原文:http://blog.51cto.com/hujiangtao/1923930 一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介 awk不仅仅时linux系统中 ...
- day16 Linux三剑客之awk
day16 Linux三剑客之awk 1.什么是awk,主要作用是什么? 什么是awk,主要作用是什么? awk 主要用来处理文件,将文本按照指定的格式输出.其中包含变量,循环以及数组. 2.awk的 ...
- Linux中磁盘管理与三剑客之awk初识
昨日内容回顾 1.用两种方法实现 将文件中以 # 开头的行 把 # 去掉 sed -r 's/^ *#//g' /etc/fstab cat /etc/fstab | tr -d '^#' 2.将文件 ...
- Linux 三剑客之 awk 实战详解教程
我们知道 Linux 三剑客,它们分别是:grep.sed.awk.在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 awk. sed 可以实现非交互式的字 ...
- 一篇文章带你学会Linux三剑客之一:awk
awk是一种用于处理文本.模式匹配的编程语言.与sed和grep,俗称Linux下的三剑客.学会 awk 等于你在 Linux 命令行里,又多了一种处理文本的选择.这篇文章重点教你如何使用,看完这篇文 ...
- Linux三剑客之awk命令
awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK 程 ...
- 详解Linux三剑客之awk
第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...
- Linux三剑客之awk精讲(基础与进阶)
第1章 awk基础入门 要弄懂awk程序,必须熟悉了解这个工具的规则.本实战笔记的目的是通过实际案例或面试题带同学们熟练掌握awk在企业中的用法,而不是awk程序的帮助手册. 1.1 awk简介 一种 ...
随机推荐
- [Flask] Flask问题集(后端模板渲染项目)
1.redirect和render_template的区别? redirect:重定向,会改变url render_template:模板渲染,用模板来渲染当前页,不会改变url 2.关于 'g' 对 ...
- Go语言系列之标准库ioutil
ioutil标准库中提供了一些常用.方便的IO操作函数 一.相关方法 func ReadAll(r io.Reader) ([]byte, error) func ReadDir(dirname st ...
- java中的spi
JAVA中的SPI机制 1.SPI简介 SPI机制(Service Provider Interface)其实源自服务提供者框架(Service Provider Framework),是一种将服务接 ...
- SYCOJ137斜线输出(1)
题目-斜线输出(1) (shiyancang.cn) 在同一斜线上的满足方程.坐标关系计算即可. #include<bits/stdc++.h> using namespace std; ...
- 面渣逆袭:Java并发六十问,快来看看你会多少道!
大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...
- 微服务架构 | 3.2 Alibaba Nacos 注册中心
目录 前言 1. Nacos 基础知识 1.1 Nacos 命名方式 1.2 Nasoc 是什么 1.3 Nacos 的 4 个关键特性 1.4 Nacos 生态图 1.5 Nacos 架构图 1.6 ...
- github与gitlab创建新仓库
github创建新仓库 然后根据下一页的命令提示进行即可 gitlab创建新仓库 git init git remote add origin git@***.***.**.**:user/proje ...
- 搭服务器之kvm--vnc连接虚拟机连接闪退直接消失 以及virsh shutdown命令无效解决办法。
之前暑期见识到了虚拟化在企业中的应用,感慨不小,以前只是自己在玩儿桌面vmware workstation,安装的虚拟机也没啥大感觉.在公司机房里大家用的dell poweredge 420,8gme ...
- Spring 官宣发布 Spring Boot 3.0 第一个里程碑 M1,从 Java 8 提升到 Java 17!
Spring官方于2022年1月20日发布Spring Boot 3.0.0-M1版本,预示开启了Spring Boot 3.0的里程碑,相信这是通往下一代Spring框架的激动人心的旅程. 接下来一 ...
- 微服务架构 | *2.3 Spring Cloud 启动及加载配置文件源码分析(以 Nacos 为例)
目录 前言 1. Spring Cloud 什么时候加载配置文件 2. 准备 Environment 配置环境 2.1 配置 Environment 环境 SpringApplication.prep ...