1. 程式人生 > 其它 >Linux磁碟管理與awk命令

Linux磁碟管理與awk命令

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