Linux三劍客之awk(包含磁碟管理)
阿新 • • 發佈:2021-12-22
1. 磁碟管理
Linux系統中磁碟管理就是將硬碟通過掛載的方式,掛載到Linux檔案系統中 1. 掛載磁碟的步驟 磁碟分割槽 掛載 # 磁碟分割槽 fdisk 分割槽2TB以下的磁碟 最多可以分4個分割槽 # 不絕對!!!!!!只能說這樣分最穩定 gdisk 分割槽2TB以上的磁碟(其實都可以) # 需先安裝 yum install gdisk -y 最多可以分128個分割槽 # 新增一塊磁碟 lsblk:檢視本機的磁碟 sda 磁碟 sr0 映象檔案 df -h:檢視本機分割槽 關機,新增磁碟,新硬碟
1
2
3
持續下一步,直至完成,確定
# 磁碟分割槽 lsblk fdisk /dev/sdb n 新建一個分割槽 p 列印分割槽表 d 刪除分割槽 q 退出 w 寫入磁碟並退出 "開始:" 1. n 2. 預設p--回車 3. 預設1--回車 4. 起始預設2048--回車 5. 確定末尾+10G(選擇你想要分的大小) 6. w寫入 # 掛載磁碟分割槽 # mount /dev/sdb1 /mnt/ # 目錄不限制,只是mnt就是用來掛載的資料夾 1. 格式化檔案系統 mkfs.xfs /dev/sdb1/ 2. 掛載 mount /dev/sdb1 /mnt/ "總結:" 1.關機 2.新增硬碟 3.建立分割槽 fdisk /dev/sdb/ or gdisk /dev/sdb 4.格式化檔案系統 mkfs.xfs /dev/sdb1 5.掛載 mount /dev/sdb1 /mnt
2. Linux三劍客之awk
awk支援變數,支援迴圈,像一個程式語言,內容很多
主要用來處理(格式化)文字的
2.1 awk的語法格式和引數
"awk的語法格式:" awk [引數] [處理規則] [操作物件] "引數:" -F 指定文字分隔符(預設以空格作為分隔符) # vim x.txt -->asldfa/asdfaf/fdaos/fasf # awk '{print $NF}' x.txt # awk -F'f' '{print $NF}' x.txt "案例:"列印系統所有的使用者的解析器 awk -F: {'print $NF'} /etc/passwd awk -F":" {'print $NF'} /etc/passwd # 冒號:的引號可加可不加。
2.2 awk的生命週期
"awk的生命週期:"
grep,sed,awk都是讀一行處理一行,直至處理完成
1. 接收一行作為輸入
2. 把剛剛讀入進來的資料文字,進行分解
# -F指定的分隔符
3. 使用處理規則處理文字
4. 輸入一行賦值給$0($0代表當前行的內容),直至處理完成
5. 把處理完成之後的所有的資料交給END{}來再次處理(空 就不處理)
2.3 awk中的預定義變數
"awk中的預定義變數:"
$0 代表當前行
# awk -F: '{print $0, '---'}' /etc/passwd
$n 代表第n列
# awk -F: '{print $1}' /etc/passwd
NF 用來記錄當前行的欄位數(分割的段數)有多少列
# awk -F: '{print NF}' /etc/passwd
# awk -F: '{print $NF}' /etc/passwd
# 可以用$NF取最後一列
NR 用來記錄行號的
# awk -F: '{print NR}' /etc/passwd
# 並不是文字再檔案內部的行號
FS 指定文字內容分隔符(預設是空格)
# awk 'BEGIN{FS=":"}{print $FN,$1}' /etc/passwd
awk -F: 'BEGIN{FS="x"}{print $NF}' /etc/passwd
"FS的優先順序要高於 -F"
OFS 指定列印分隔符(預設空格)
# awk -F: 'BEGIN{OFS=" >>> "}{print $NF,$1}' /etc/passwd
2.4 awk處理規則的執行流程和awk中的函式
"awk處理規則的執行流程:"
BEGIN{} # 變數在這裡
// # 正則
{} # 迴圈,處理文字
END{} # 列印之前再統一處理一遍
# 以上沒有哪一部分是必須的,至少有一個,最多有四個
"awk中的函式:"
# 函式只能應用於迴圈和END中{},END{}
"print" 列印
"printf" 格式化列印
%s 字串
%d 數字
- 左對齊
+ 右對齊
15 至少佔用15(n)個字元
awk -F: 'BEGIN{OFS=" | "}{printf "|%-15s|%-15s|",$NF,$1}' /etc/passwd
2.5 awk中的定位
"awk中的定位:"
1. 正則
awk -F: '/root/{print $0}' /etc/passwd
awk -F: '/^root/{print $0}' /etc/passwd
awk -F: '/root/ROOT/Root/{print $0}' /etc/passwd
......
2. 比較表示式(匹配文字內的內容)
>,<,>=,<=, ~(正則匹配), !~(正則匹配)(取反)
案例:要求列印屬組id大於屬主id的行
awk -F: '$4 > $3{print $0}' /etc/passwd
# 打印出結尾包含bash的
awk -F: '$NF ~ /bash/{print $0}' /etc/passwd
# 不包含的
awk -F: '$NF !~ /bash/{print $0}' /etc/passwd
3. 邏輯表示式
&& 邏輯與
|| 邏輯或
! 邏輯非
awk -F: '$3 + $4 > 2000 && $3 * $4 > 2000{print $0}' /etc/passwd
4. 算術表示式
# + - * / %(取模)
案例:要求屬組+屬主的id大於2000的
awk -F: '$3 + $4 > 2000{print $0}' /etc/passwd
案例:要求列印偶數行
awk -F: 'NR % 2 ==0{print $0}' /etc/passwd
5. 條件表示式(匹配自定義的內容)
# >,<,>=,<=,== 多出一個==
案例:要求列印第三行
awk -F: 'NR == 3{print $0}' /etc/passwd
6. 範圍表示式
案例:列印以root開頭的行到ftp開頭的行
awk -F: '/^root/,/^ftp/{print $0}' /etc/passwd
2.6 awk中的流程控制
# 只存在於迴圈之中{}
1. if
# 判斷
awk -F: '{if($3>$4)}{print "大於"}else{print "大於或等於"}' /etc/passwd
if(){}
if(){}else{}
if(){}else if(){}else{}
2. for
案例:每行列印10次
awk -F: '{for(i=0;i<10;i++){print $0}}' /etc/passwd
for(i='初始值';條件判斷;遊標每次處理變數){}
3. while
案例:每行列印10次
awk -F: 'i=1; while(i<10){print $0, i++}' /etc/passwd
while(條件判斷){}
案例:每隔5行列印一個橫線行
awk -F: '{if(NR%5==0){print "--------------"}print $0}' /etc/passwd