Linux磁碟管理與awk命令
阿新 • • 發佈:2021-12-22
Linux磁碟管理與awk命令
- 磁碟管理
- awk命令
一、磁碟管理
Linux系統中磁碟管理就是將硬碟通過掛載的方式掛載到Linux檔案系統中。
1.掛載磁碟的步驟
1)磁碟分割槽
2)掛載
2.磁碟分割槽
fdisk命令:分割槽2TB以下的磁碟,最多可以分4個分割槽
gdisk命令:分割槽2TB以上的磁碟,最多可以分128個分割槽
注意:gdisk需要安裝
fdisk /dev/sdb
gdisk /dev/sdb
3.檢視本機磁碟與分割槽的命令
lsblk:檢視本機的磁碟
df -h:檢視本機的分割槽
4.磁碟分割槽時的指令
n:新建一個分割槽
p:列印分割槽表
w:寫入磁碟並退出
q:退出
d:刪除一個分割槽
5.格式化檔案系統
mkfs.xfs /dev/sdb1
6.掛載磁碟分割槽
mount /dev/sdb1 /mnt
7.全部流程
1)關機
2)新增硬碟
3)建立分割槽
4)格式化檔案系統
5)掛載
二、awk命令
awk主要用來格式化文字
1.語法
awk [引數] [處理規則] [操作物件] 引數: -F:指定文字分隔符(預設是以空格作為分隔符) awk -F'f' '{print $NF}' 1.txt
案例:列印系統所有使用者的解析器
awk -F: '{print $NF}' /etc/passwd
2.awk的生命週期
grep、sed和awk都是讀一行處理一行,直至處理完成
1)接收一行作為輸入
2)把剛剛讀入進來的檔案進行分解
3)使用處理規則處理文字
4)輸入一行,賦值給$0,直至處理完成
5)把處理完成之後的所有資料交給END{}來再次處理
3.awk中的預定義變數
$0:代表當前行 [root@localhost ~]# awk -F: '{print $0, "---"}' /etc/passwd $n:代表第n列 [root@localhost ~]# awk -F: '{print $1}' /etc/passwd NF:記錄當前行的欄位數 [root@localhost ~]# awk -F: '{print NF}' /etc/passwd [root@localhost ~]# awk -F: '{print $NF}' /etc/passwd # $NF表示最後一列 NR:用來記錄行號 [root@localhost ~]# awk -F: '{print NR}' /etc/passwd FS:指定文字內容分隔符(預設是空格) [root@localhost ~]# awk 'BEGIN{FS=":"}{print $NF, $1}' /etc/passwd FS 的優先順序要高於 -F OFS:指定列印分隔符(預設空格) [root@localhost ~]# awk -F: 'BEGIN{OFS=" >>> "}{print $NF, $1}' /etc/passwd
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中的定位
1)正則表示式
[root@localhost ~]# awk -F: '/root/{print $0}' /etc/passwd [root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
2)比較表示式
> < >= <= ~ 正則匹配 !~ 正則匹配(取反) 案例:要求列印屬組ID大於屬主ID的行 [root@localhost ~]# awk -F: '$4 > $3{print $0}' /etc/passwd 案例:結尾包含bash [root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd 案例:結尾不包含bash [root@localhost ~]# awk -F: '$NF !~ /bash/{print $0}' /etc/passwd
3)邏輯表示式
&&:邏輯與 ||:邏輯或 !:邏輯非 [root@localhost ~]# awk -F: '$3 + $4 > 2000 && $3 * $4 > 2000{print $0}' /etc/passwd [root@localhost ~]# awk -F: '$3 + $4 > 2000 || $3 * $4 > 2000{print $0}' /etc/passwd [root@localhost ~]# awk -F: '!($3 + $4 > 2000){print $0}' /etc/passwd
4)算術表示式
+ - * / % 案例:要求屬組 + 屬主的ID 大於 2000 [root@localhost ~]# awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd 案例:要求屬組 * 屬主的ID 大於 2000 [root@localhost ~]# awk -F: '$3 * $4 > 2000{print $0}' /etc/passwd 案例:要求列印偶數行 [root@localhost ~]# awk -F: 'NR % 2 == 0{print $0}' /etc/passwd 案例:要求列印奇數行 [root@localhost ~]# awk -F: 'NR % 2 == 1{print $0}' /etc/passwd
5)條件表示式
== > < >= <= 案例:要求列印第三行 [root@localhost ~]# awk -F: 'NR == 3{print $0}' /etc/passwd
6)範圍表示式
[root@localhost ~]# awk -F: '/^root/,/^ftp/{print $0}' /etc/passwd
7.流程控制
只存在迴圈之中
1)if
[root@localhost ~]# awk -F: '{if($3>$4){print "大於"}else{print "小於或等於"}}' /etc/passwd
格式:
if(){} if(){}else{} if(){}else if(){}else{}
2)for
[root@localhost ~]# awk -F: '{for(i=10;i>0;i--){print $0}}' /etc/passwd
格式:
for(i="初始值";條件判斷;遊標){}
3)while
[root@localhost ~]# awk -F: '{i=1; while(i<10){print $0, i++}}' /etc/passwd
格式:
while(條件判斷){}
案例:每隔五行列印一行橫線
[root@localhost ~]# awk -F: '{if(NR%5==0){print "--------------------"}print $0}' /etc/passwd