Linux 的 shell 程式設計
阿新 • • 發佈:2018-12-01
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是數字指代輸出幾個數字。
-%
如:%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 替換成空