SHELL學習筆錄 前段時間學了學shell,做了些筆記,希望對好學者有所協助,如下: 1.echo "hello" 輸出hello,自動列印分行符號 echo "hello \c" 然echo不列印分行符號 echo * 顯示所有檔案,不包括隱藏檔案 echo .* 顯示隱藏檔案 2.printf format-string[arguments] 幾乎實現了C中printf的功能,它不像echo自動換行 3.重新導向 < 改變標準輸入 program < file 將program的標準輸入改為file > 改變標準輸出 program > file 將program的標準輸出改為file 目標檔案file不存在時,會建立file,若存在則會覆蓋 program >> file 不覆蓋已有file,而是把內容追加在file結尾處 4.參數使用: www.2cto.com $n 第n個參數(和C中的宏類似,$n只是簡單的替代, $n$m可組合為一個參數:) 變數賦值"="左右不能有空格 5.萬用字元: * 匹配多個字元 ? 匹配一個字元 [charset] 匹配charset中的字元,如[0123456789]匹配一個數字0123456789,還可寫成[0-9] [!charset] 取charset的補集作為匹配集合 6.變數替換: ${parameter:-word} 若parameter為空白或未設定,則用word代替parameter進行替換,parameter值不變 ${parameter:=word} 若parameter為空白或未設定,則parameter設為值word ${parameter:?message} 若parameter為空白或未設定,則把message作為標準錯誤輸出 ${parameter:+word} 若parameter設定了,則用word代替parameter進行替換,parameter值不變 7.引用: 關閉一個字元的特殊意義 \ '' "" 8. if list1 ————————————>list1結束代碼為0時為真 then list2 elif list3 then list4 else then list5 fi test expression = [expression] expression為test可理解的運算式 test可理解的運算式: -檔案測試:檢查檔案是否滿足某種特殊規則 test option file option如 vcHRpb24=" src="http://www.bkjia.com/uploads/allimg/131213/051R53018-0.gif" /> -字串比較: -z string 長度為0為真 -n string 長度不為0為真 string1 = string2 string1 != sting2 -數字比較:整數比較 int1 option int2 option————>-eq, -ne, -lt, -le, -gt, -ge = != < <= > >= -複合運算式: ! 非 -a 與st if [ expression1 -a expression2 ] -o 或 9. case word in pattern1) list1;; pattern2) list2;; ... www.2cto.com esac 10. while command ——————> 為0時為真 do list done 11. until command do list done 12.數組 下標使用數字,自增應該如此:index=$(expr $index + 1),expr不可少,“+”兩邊要空格 要應用數組中元素值是,應如此:${array[$index]},花括弧不可少 列出數組中所有元素:echo ${arrar[*]} 13.字元處理 截取: expr substr “$var” 1 2 從第一個字元開始截取變數var的2個字元 var2=·expr substr “$var” 1 2· 把截取的字元賦值給變數 www.2cto.com ======================================AWK==================================================== 1.awk程式:模式+操作 pattern {action} pattern {action} pattern預設:action應用在每條輸入記錄 action預設 :列印匹配記錄到標準輸出 2中特殊pattern: BEGIN:與之關聯的操作只執行一次,執行在任何命令列檔案或一般命令列賦值被處理之前,任何開頭的-v選項指定完成之後;多用於初始化 END :與之關聯的操作只執行一次,執行在所有輸入資料處理完之後;多由於產生摘要報告或做清理工作 2.常用的內建變數: ARGC 參數計數 ARGV 參數向量,或參數值 FILENAME 當前輸入檔案的名稱 FNR 當前輸入檔案的記錄數 FS 欄位分隔字元(Regex,預設為" ") NF 目前記錄的欄位數 NR 在工作(job)中的記錄數 OFS 輸出欄位的分隔字元,預設為" " ORS 輸出記錄的分隔字元,預設為"\n" 3.陣列變數: 下標可以是任一數字或字串運算式,不一定要整數 4.命令列參數: 5.記錄: 空行也可以是一條記錄 =====================================SED===================================================== 1.sed調用 sed [option] sed命令 輸入檔案 sed [option] -f sed指令檔 輸入檔案 sed指令檔 [option] 輸入檔案 option: www.2cto.com -n 不列印編輯行 -p 列印 -c 下一命令是編輯命令 -f 執行sed指令碼時使用 2.定位文本(address) sed瀏覽輸入檔案時,預設是從第一行開始,如下可以定位文本: 1).使用行號: n 第n行 n,m 第n行-第m行(包括行m) n,m! 行號部位n和m的行 1,$ 第一行-最後一行 2).使用Regex: /pattern/ 包含模式的行 /pattern1/pattern2/ 包含兩個模式的行 pattern/,n 指定行上包含模式的行 n,/pattern/ ?? 3.sed編輯命令: p 列印匹配行 = 顯示行號 a\ 在定位行號後附加資訊 i\ 在定位行號後插入資訊 d 刪除定位行 c\ 替換 s 模式比對替換 r 從另一檔案中讀取文本 w 寫文本到檔案 q 退出 l 顯示控制字元 {} n g 全域 y n ^ 行首開始 執行個體:sed '/sdd/=' test.txt 列印test.txt的所有內容,並顯示匹配'sdd'行的行號 sed -n -e '/sdd/p' -e '/sdd/=' test.txt 僅列印匹配模式的行,並顯示行號,兩個e都不能少 www.2cto.com 4.插入文本 5.修改文本 格式:[address[,address]] c\ text 功能:將定位行替換為text 格式:[address[,address]] i\ text 功能:在定位行前插入行text 格式:[address[,address]] a\ text 功能:在定位行後追加行text 6.刪除文本 格式:[address[,address]]d 功能:刪除定位行 7.替換文本 格式:[address[,address]] s/pattern_to_find/replacement_pattern/[g p w n] 功能: g: 預設下是替換第一次模式比對的,用g可用於全域的模式比對 p: 預設下列印所有替換行,用p可以使-n選項無效 w: 寫入指定檔案 n: &: 代表原模式 執行個體: sed -n 's/aaa/ccc &/p' test.txt 模式aaa前追加ccc sed -n 's/aaa/& ccc/p' test.txt 模式aaa後追加ccc 8.讀寫檔案 www.2cto.com 格式:[address[,address]]w filename 功能:將定位行寫入檔案filename 格式:address r filename 功能:將檔案filename的內容追加在定位行後 執行個體: sed '/^$/d' filename 刪除空行 sed 's/^[0-9]//g' filename 去除行首數字 作者 Wowo(大我小我)