shell腳本與命定

  1. 變量、函數的定義與引用,其表達方法很多,我選下面這種:

變量名=`命定`   #變量定義

$變量名       #變量的引用


函數名()

{

 命定1;

 命定2;           

 .....

}          #函數的定義

函數名      #函數的引用    

例如我第一篇博文裏的

user_add()

{

id smbmin &>/dev/null;  #smbmin是已經存在的用戶

while (($?==0))

    do

read -p "please input user name:"  user_name;

id $user_name &>/dev/null;

done

useradd   $user_name -g smbkefu -s /sbin/nologing;

smbpasswd -a $user_name;

echo "$user_name is ok!"

}                      #定義user_add函數    

user_add                  #引用user_add函數

2.腳本中常用命定

sort 主要用來排序,它選項很多,我只列常用的

-n:按數字排序

-r:反向排序

-u: 只顯示不重複的

還有一個就是按某列進行排序

sort -t '分隔符' -k '列號' 


uniq 主要用來去重和統計重複的行

-i:忽略大小寫

-c:統計不同行的重複次數

-u:只顯示唯一的行


awk以一行一行的處理文件,主要用來截取文件的某段信息

基本表達式爲:awk -F '分隔符' '條件{print 位置參數"輸出語句"位置參數}'

$0爲全行,

$n爲第N個字段

NR爲行號

NF爲總行數


sed文本在線編輯工具,一行一行處理,主要用於對文件的增刪改查

基本表達式爲:sed -[選項] "行號,行號 操作" 文件

或者 sed -[選項] "/條件/操作" 文件

其中主要常用選項有: 

-i:直接對文件裏面內容操作

-n:顯示匹配的行,否者會全部顯示

刪:操作中刪除行爲d ;若要刪除字段這用 s/字段//g 來實現,原理是把這個字段變成空格來實現刪除。

增:在某行前添加一個新行主要用i,某行後面添加爲a;如要行首添加但不換行則爲 s/^/字段/,行尾添加但不換行爲 s/$/字段/;若要某個字段1前添加某個字段2則爲:s/字段1/字段1字段2/。

改:若要把字段1改爲字段2則爲:s/字段1/字段2/g,加了g就是全局替換,否則只替換匹配行的第一個字段。

查:用的是-n選項和p操作。

值得注意的是sed的操作中=爲打印行號。


cut 用來截取某個字段

-d '指定分隔符'

-f '提取的段號'

-c 以字符爲單位


wc 用來統計

-l 統計總共的行

-w 統計總共的字符

-m 統計總共的字節

 

grep用來過濾一般與|一起用

-c:統計行數

-n:顯示行號

-E:支持正則表達式,也可以寫作egrep

-v:顯示不匹配的行(取反)


tail -n 數字 取倒數幾行

head -n 數字 取頭幾行

  這是我目前整理出來的實用的命定選項,如有錯誤請指正,如有更優或補充請建議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章