磁盘分区 & 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简介 一种 ...
随机推荐
- 安装devstack中遇到的一些问题整理
1.执行stack.sh文件后提示 ./stack.sh:528:check_path_perm_sanity /opt/devstack/functions:582:die [ERROR] /opt ...
- element ui 动态菜单解决方案集锦
1.<分享一个VUE Element-UI 的多级菜单动态渲染的组件> 2.<饿了么组件库,element-ui开发精美的后台管理系统系列之(一)开发伸缩菜单> 3.<V ...
- MySQL 中如何定位 DDL 被阻塞的问题
经常碰到开发.测试童鞋会问,线下开发.测试环境,执行了一个DDL,发现很久都没有执行完,是不是被阻塞了?要怎么解决? 包括在群里,也经常会碰到类似问题:DDL 被阻塞了,如何找到阻塞它的 SQL ? ...
- 机器学习术语表——Beta
机器学习术语表 Beta 提示:你可以通过中文名称拼音首字母快速检索. C 超参数|Hyperparameter 在机器学习中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据.通 ...
- 【爬虫】从零开始使用 Scrapy
一. 概述 最近有一个爬虫相关的需求,需要使用 scrapy 框架来爬取数据,所以学习了一下这个非常强大的爬虫框架,这里将自己的学习过程记录下来,希望对有同样需求的小伙伴提供一些帮助. 本文主要从下面 ...
- Easticsearch概述(API使用)二
Rest简介 一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务端互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制 Rest的操作分为以 ...
- Windows 和 Ubuntu 的网络能互相 ping 通之后,linux无法上网原因:①路由没设置好,②DNS 没设置好
确保 Windows 和 Ubuntu 的网络能互相 ping 通之后,如果 Ubuntu 无法上网,原因通常有 2 个:路由没设置好,DNS 没设置好. 如果执行以下命令不成功,表示路由没设置好: ...
- k8s 基于RBAC的认证、授权介绍和实践
在K8S中,当我们试图通过API与集群资源交互时,必定经过集群资源管理对象入口kube-apiserver.显然不是随随便便来一个请求它都欢迎的,每个请求都需要经过合规检查,包括Authenticat ...
- golang中的结构体工厂
1. main包 package main import ( "day01/utils" "fmt" ) //type File struct { // fd ...
- linux 常用命令。
/* Linux常用命令? 1 查看 ls 展示当前目录下的可见文件 ls -a 展示当前目录下所有的文件(包括隐藏的文件) ls -l(ll) ...