1. 程式人生 > 其它 >磁碟分割槽和awk命令

磁碟分割槽和awk命令

磁碟管理

Linux中磁碟管理就是將硬碟通過掛載的方式掛載到linux檔案系統中

主要步驟是磁碟分割槽和掛載

具體步驟如下:

1.關機

2.新增硬碟

​ 2.1 通過lsblk命令檢視本機的磁碟

​ 2.2 通過df -h命令檢視本機的分割槽

3.磁碟分割槽

​ 有兩個命令,fdisk和gdisk

  • fdisk:分割槽2TB以下的磁碟,最多可以分4個分割槽

  • gdisk:分割槽2TB以上的磁碟,最多可以分128個分割槽

    n : 新建一個分割槽
    p : 列印分割槽表
    w : 寫入磁碟並退出
    q : 退出
    d : 刪除一個分割槽

磁碟分割槽建立步驟如下,建立多個分割槽重複多次即可

[root@localhost ~]# gdisk /dev/sdc
-bash: gdisk: 未找到命令
# 安裝gdisk
[root@localhost ~]# yum -y install gdisk
# 再重新執行
[root@localhost ~]# gdisk /dev/sdc
Command (? for help): n
# 選擇命令 輸入n新建分割槽
Partition number (1-128, default 1): 
# 分割槽號(1-128)回車鍵使用預設值
First sector (34-6920601566, default = 2048) or {+-}size{KMGTP}: 
# 起始扇區 回車鍵使用預設值
Last sector (2048-6920601566, default = 6920601566) or {+-}size{KMGTP}: +100G
# last扇區 使用+號來新增
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): w
# w寫入磁碟並退出

4.格式化檔案系統

[root@localhost ~]# mkfs.xfs /dev/sdc1

5.掛載

[root@localhost ~]# mount /dev/sdc1 /mnt
[root@localhost ~]# df -h
# 使用df -h確認掛載是否成功

awk命令

AWK 是一種處理文字檔案的語言,是一個強大的文字分析工具。

之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字元。

相較於 sed 常常作用於一整個行的處理, awk 則比較傾向 於一行當中分成數個『欄位』來處理。

1. awk的語法

​ awk [引數] [處理規則] [操作物件]

2. 引數

​ -F :指定文字分隔符(預設是以空格作為分隔符)

​ 案例:列印文字的最後一列

​ awk -F '{print $NF}' 檔案路徑

3.awk中的預定義變數

$0	: 代表當前行
		[root@localhost ~]# awk -F' ' '{print $0}' 1.txt
# {}裡迴圈打印出每一行的內容
$n	:代表第n列
		[root@localhost ~]# awk -F' ' '{print $1}' 1.txt
NF  :記錄當前行的欄位數
		[root@localhost ~]# awk -F' ' '{print NF}' 1.txt
$NF:最後一列		
		[root@localhost ~]# awk -F' ' '{print $NF}' 1.txt
NR	:用來記錄行號
		[root@localhost ~]# awk -F' ' '{print NR}' 1.txt
FS  :指定文字內容分隔符(預設是空格)
		[root@localhost ~]# awk 'BEGIN{FS=":"}{print $NF, $1}' 1.txt
		FS 的優先順序要高於 -F
OFS :指定列印分隔符(預設空格)
		[root@localhost ~]# awk -F: 'BEGIN{OFS=" >>> "}{print $NF, $1}' 1.txt

4.awk處理規則的執行流程

​ BEGIN{ }
​ //
​ { }
​ END{ }

5.awk中的函式

print 列印
printf 格式化列印
%s 字串
%d 數字
- 左對齊
+ 右對齊
15 至少佔用15字元
[root@localhost ~]# awk -F: 'BEGIN{OFS=" | "}{printf "|%+15s|%-15s|\n", $NF,$1}' /etc/passwd

6.awk中的定位

6.1.正則表示式

[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd

6.2.比較表示式

> 大於
< 小於
>= 大於等於
<= 小於等於
~ 正則匹配
!~ 正則不匹配

​ 案例

要求列印屬組ID小於屬主ID的行
	[root@localhost ~]# awk -F: '$4 < $3{print $0}' /etc/passwd
		
案例:結尾包含nologin
	[root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd
		
案例:結尾不包含nologin
	[root@localhost ~]# awk -F: '$NF !~ /bash/{print $0}' /etc/passwd

6.3.邏輯表示式

&& 邏輯與
|| 邏輯或
! 邏輯非

​ 案例

[root@localhost ~]# awk -F: '$3 * $4 > 3000 && $3 - $4 < 0{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$3 * $4 > 3000 || $3 - $4 < 0{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '!($3 + $4 > 2000){print $0}' /etc/passwd

6.4.算數表示式

+
-
*
/
% 取餘

​ 案例
​ [root@localhost ~]# awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd

6.5.條件表示式

	==
	>
	<
	>=
	<=
	
案例:要求列印第五行
			[root@localhost ~]# awk -F' ' 'NR == 5{print $0}' 1.txt

6.6.範圍表示式

案例:列印以bin開頭的行
[root@localhost ~]# awk -F: '/^bin/{print $0}' /etc/passwd

7.流程控制

​ 流程控制只存在於迴圈中

if
表示式:
if(){}
if(){}else{}
if(){}else if(){}else{}

[root@localhost ~]# awk -F: '{if($3>$4){print $3}else{print $4}}' /etc/passwd
for
表示式:
for(i="初始值";條件判斷;遊標){}
[root@localhost ~]# awk -F: '{for(i=1;i<10;i++){print $0}}' /etc/passwd
while
表示式:
while(條件判斷){}
[root@localhost ~]# awk -F: '{i=1; while(i<10){print $0, i++}}' /etc/passwd