1. 程式人生 > 其它 >磁碟管理,linux三劍客之awk

磁碟管理,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