1. 程式人生 > >Linux 的 shell 程式設計

Linux 的 shell 程式設計

Linux 的shell 程式設計
-記住三個命令的運用形式
grep ‘字元’ 檔案
sed ‘命令’ 檔案
awk ‘條件{命令}’ 檔案
-死記一點,單引號內就是正則表示式的用法
1.grep 及正則查詢
在這裡插入圖片描述
2.cut 操作
2.1 cut 檢視
在這裡插入圖片描述
2.2 cut [選項] 檔名
選項:
-f 列號 :提取第幾列
-d 分隔符 :按照指定分隔符分隔列
在這裡插入圖片描述
2.2.1cut命令的侷限
df -h | cut -d " " -f 1,3
在這裡插入圖片描述
2.2.2 查詢除去root 以外的
在這裡插入圖片描述
2.3 printf 命令
printf ‘輸出型別輸出格式’ 輸出內容
輸出型別:

  • %ns : 輸出字串,n是數字指代輸出幾個字元。
    -%ni : 輸出整數。n是數字指代輸出幾個數字。
    -%
    m.nf
    : 輸出浮點數。m和n是數字,指代輸出的整數位數和小數位數
    如:%8.2f代表共輸出8位數,其中2位是小數,6位是整數。
    輸出格式:
  • \a : 輸出警告聲音;
  • \b : 輸出退格鍵,也就是Backspace鍵
  • \f : 清除螢幕
  • \n :換行
  • \r : 回車,也就是Enter鍵
  • \t : 水平輸出退格鍵,也就是Tab鍵
  • \v : 垂直退格鍵,也就是Tab鍵
    在這裡插入圖片描述
    2.3.1 printf ‘%s’ $ (cat student.txt)
    不調整輸出格式
    printf ‘%s\t%s\t%s\t%s\n’ $(cat stu.txt)
    在這裡插入圖片描述
    2.4 awk ‘條件1{動作1}條件2{動作2}…’ 檔名
    條件(Pattern):
  • 一般使用關係表示式作為條件
  • x > 10判斷變數x是否大於10
  • x >= 10 大於等於
  • x <= 10 小於等於
    動作(Action):
  • 格式化輸出
  • 流程控制語句

在awk命令的輸出中支援print和printf命令
print :print會在每個輸出之後自動加入一個換行符(Linux預設沒有print命令)
printf :printf是標準格式輸出命令,並不會自動加入換行符,如果需要換行,需要手工加入換行符
2.4.1 BEGIN
awk ’ BEGIN{printf"hello baby \n"}{printf $2 “\t” “$4” “\n”}’ stu.txt
在這裡插入圖片描述


2.4.2END
awk ’ END{printf"hello baby \n"}{printf $2 “\t” “$4” “\n”}’ stu.txt
在這裡插入圖片描述
2.5 sed 命令
sed 是一種幾乎包括所有的UNIX平臺(包括Linux) 的輕量級流編輯器。sed主要是用來將資料進行選取、替換、刪除、新增的命令。
sed [選項] ‘[動作]’ 檔名
-n :一般sed命令會把所有資料都輸出到螢幕,如果加入此選擇則只會把經過sed命令處理的行輸出到螢幕。
-e :允許對輸入資料應用多條sed命令編輯
-i :用sed的修改結果直接修改讀取資料的檔案,而不是由螢幕輸出
動作:

  • a : 追加,在當前行新增一行或多行
  • c : 行轉換,用c後面的字串替換元資料行
  • i : 插入,在當期行前插入一行或者多行。
  • d : 刪除,刪除指定的行
  • p : 列印,輸出指定的行
  • s : 字串轉換,用一個字串替換另一個字串。格式為 “行範圍s/舊字串/新字串/g” (和 vim 中的替換格式類似)。
    2.5.2 行資料操作
    sed ‘2p’ stu.txt
    #檢視檔案的第二行
    sed -n ‘2p’ stu.txt
    在這裡插入圖片描述
    sed ‘2,3d’ stu.txt
    刪除第二行到第三行的資料,但不修改檔案本身
    在這裡插入圖片描述
    sed ‘2a piaoliang jiushi renxing’ stu.txt
    在第二行後追加hello
    在這裡插入圖片描述
    sed ‘2i meinv’ stu.txt
    在第二行前插入兩行資料
    在這裡插入圖片描述
    sed ‘2c piaoliang jiushi renxing’ stu.txt
    資料替換
    在這裡插入圖片描述
    2.5.3 字串替換
    sed ‘2s/59/99/g’ stu.txt
    在第二行中,把59換成99
    在這裡插入圖片描述
    sed -i ‘2s/59/99/g’ stu.txt
    sed操作的資料直接寫入檔案
    在這裡插入圖片描述
    sed -e ‘s/youyou//g;s/abin//g’ stu.txt
    同時把"youyou" 和 abin 替換成空
    在這裡插入圖片描述