磁碟管理,linux三劍客之awk
一、磁碟管理
linux系統中磁碟管理就是將硬碟通過掛載的方式掛載到linux檔案系統中
1、掛載磁碟的步驟
1、磁碟分割槽
2、掛載
2、磁碟分割槽
fdisk:分割槽2TB以下的磁碟,最多可以分4個區
gdisk:分割槽2TB以上的磁碟,最多可以分128個分割槽(需要安裝:yum install gdisk -y)
3、新增一塊磁碟
lsblk:檢視本機的磁碟
df -h:檢視本機的分割槽
4、磁碟分割槽
n:新建一個分割槽
p:列印分割槽表
w:寫入磁碟並退出
q:退出
d:刪除一個分割槽
5、掛載磁碟分割槽
1、格式化檔案系統
mkfs.xfs /dev/sdb1
6、總結
1、關機
2、新增硬碟
3、建立分割槽
fdisk /dev/sdb 或 gdisk /dev/sdb
4、格式化檔案系統
mkfs.xfs /dev/sdb1
5、掛載
mount /dev/sdb1 /mnt
二、awk
awk命令-文字和資料進行處理的程式語言
1、awk的語法
awk [引數] [處理規則] [操作物件]
2、引數
-F:指定文字分隔符(預設是以空格作為分隔符)
[root@localhost ~]# cat 3.txt jakdfj djsfj jklll feefsdjlljj jjll fjklkjl jsdfds fersdf jere [root@localhost~]# awk '{print $NF}' 3.txt jklll jjll fjklkjl jere [root@localhost ~]# awk -F'j' '{print $NF}' 3.txt klll ll l ere
案例:列印系統所有使用者的解析器
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
3、awk的生命週期
grep、sed和awk都是讀一行處理一行,直至處理完成
1、接收一行作為輸入
2、把剛剛讀入進來得到的文字進行分解
3、使用處理規則處理文字
4、輸入一行,賦值給$0,直至處理完成
5、把處理完成之後的所有資料交給END{}來再次處理
4、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
NR:用來記錄行號
[root@localhost ~]# awk -F: '{print NR}' /etc/passwd
FS:指定文字內容分隔符(預設是空格)
[root@localhost ~]# awk 'BEGIN{FS=":"}{print $NF,$1}' /etc/passwd
FS的優先順序要高於 -F
[root@localhost ~]# awk -F: 'BEGIN{FS="x"}{print $NF}' /etc/passwd
OFS:指定列印分隔符(預設空格)
[root@localhost ~]# awk -F: 'BEGIN{OFS=">>>"}{print $NF,$1}' /etc/passwd
5、awk處理規則的執行流程
BEGIN{}
//:正則匹配
{}:迴圈
END{}
6、awk中的函式(函式一般應用於{}迴圈裡面)
print:列印
printf:格式化列印
%s:字串
%d:數字
-:左對齊
+:右對齊
15:至少佔用15字元
[root@localhost ~]# awk -F: 'BEGIN{OFS="|"}{printf "|%+15s|%-15s|\n",$NF,$1}' /etc/passwd
7、awk中的定位
1、正則表示式
[root@localhost ~]# 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
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '/^root/{print $0}' /etc/passwd root:x:0:0:root:/root:/bin/bash
2、比較表示式
>
<
>=
<=
~:正則匹配
!~:正則匹配(取反)
例1、列印屬組ID大於屬主ID的行
[root@localhost ~]# awk -F: '$4>$3{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$4>$3{print $0}' /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
例2、列印結尾包含bash的行
[root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd
[root@localhost ~]# awk -F: '$NF ~ /bash/{print $0}' /etc/passwd root:x:0:0:root:/root:/bin/bash test:x:1000:1000::/home/test:/bin/bash test03:x:1001:1000::/home/test03:/bin/bash test05:x:998:996::/home/test05:/bin/bash tuser1:x:1002:1002::/home/tuser1:/bin/bash tuser2:x:1003:1003:手動建立使用者:/home/tuser2:/bin/bash tuser3:x:1004:1004:手動建立使用者:/home/tuser3:/bin/bash
例3、列印結尾不包含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 test03:x:1001:1000::/home/test03:/bin/bash tuser1:x:1002:1002::/home/tuser1:/bin/bash tuser2:x:1003:1003:手動建立使用者:/home/tuser2:/bin/bash tuser3:x:1004:1004:手動建立使用者:/home/tuser3:/bin/bash
[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、算數表示式
+ - * / %
例1:要求屬組+屬主的ID大於2000
[root@localhost ~]# awk -F: '$3+$4>2000{print $0}' /etc/passwd test03:x:1001:1000::/home/test03:/bin/bash tuser1:x:1002:1002::/home/tuser1:/bin/bash tuser2:x:1003:1003:手動建立使用者:/home/tuser2:/bin/bash tuser3:x:1004:1004:手動建立使用者:/home/tuser3:/bin/bash
例2:列印偶數行
[root@localhost ~]# awk -F: 'NR % 2 == 0{print $0}' /etc/passwd
例3:列印奇數行
[root@localhost ~]# awk -F: 'NR % 2 == 1{print $0}' /etc/passwd
5、條件表示式
== > < >= <=
例1:列印第三行
[root@localhost ~]# awk -F: 'NR == 3{print $0}' /etc/passwd daemon:x:2:2:daemon:/sbin:/sbin/nologin
6、範圍表示式
[root@localhost ~]# awk -F: '/^root/,/^ftp/{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 operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
8、流程控制(只存在迴圈之中)
if(){}
if(){}else{}
if(){}else if(){}else{}
[root@localhost ~]# awk -F: '{if($3>$4){print $0,"大於"}else{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 大於
for(i="初始值";條件判斷;遊標){}
[root@localhost ~]# awk -F: '{for(i=5;i>0;i--){print $0}}' /etc/passwd root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash 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 bin:x:1:1:bin:/bin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin
while(條件判斷){}
[root@localhost ~]# awk -F: '{i=0;while(i<5){print $0,i++}}' /etc/passwd root:x:0:0:root:/root:/bin/bash 0 root:x:0:0:root:/root:/bin/bash 1 root:x:0:0:root:/root:/bin/bash 2 root:x:0:0:root:/root:/bin/bash 3 root:x:0:0:root:/root:/bin/bash 4 bin:x:1:1:bin:/bin:/sbin/nologin 0 bin:x:1:1:bin:/bin:/sbin/nologin 1 bin:x:1:1:bin:/bin:/sbin/nologin 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 bin:x:1:1:bin:/bin:/sbin/nologin 4
每隔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