NO IMAGE

一,,shell指令碼中常用命令:
1,diff命令:
diff命令是以逐行的方式,比較文字檔案的異同處。如果該命令指定進行目錄的比較,則將會比較該目錄中具有相同檔名的檔案,而不會對其子目錄檔案進行任何比較操作。
使用規則:

diff  [options]  target1 target2
diff file1 file2
diff direcory1 directory2
#輸出結果含義:
[num1,num2][a|c|d][num3,num4]
num1,num2表示在第一個檔案中的行數
a表示新增----add
c表示更改----change
d表示刪除----delete
<表示第一個檔案中的內容,>表示第二個檔案中的內容,---分割線
num3,num4表示在第二個檔案中的行數
2,4c2,4表示改變第一個檔案中的第二行和第四行才能匹配第二個檔案中的第二行和第四行
#引數:
-b或--ignore-space-change  不檢查空格字元的不同
-B或--ignore-blank-lines  不檢查空白行
-c  顯示全部內文,並標出不同之處
-i或--ignore-case  不檢查大小寫的不同
-p:若比較的檔案為C語言的程式碼檔案時,顯示差異所在的函式名稱;
-q或--brief:僅顯示有無差異,不顯示詳細的資訊
-r或--recursive:比較子目錄中的檔案
-u 以合併的方式來顯示檔案內容的不同

2,cut命令:cut命令多用與字元擷取

cut -d          指定分隔符
cut -f  1,7|1-7     指定擷取的列
cut -c  1,4|1-4 指定擷取的字元位置

3,uniq:重複字元做相應的處理

uniq -u     顯示唯一的行
uniq -d     顯示重複的行
uniq -c     每行顯示一次並統計重複次數

4,sort:多用於字元排序

sort -n     純數字排序
sort -r     倒序
sort -u     去掉重複數字
sort -o     輸出到指定檔案中
sort -t     指定分隔符
sort -k     指定要排序的列

5,test命令:
test命令和[]等同
test “A&quot;==&quot;” style=”position: relative;” tabindex=”0″ id=”MathJax-Element-161-Frame” class=”MathJax”>A”==”A”==”A” == “B” 等同 [ “A&quot;==&quot;” style=”position: relative;” tabindex=”0″ id=”MathJax-Element-162-Frame” class=”MathJax”>A”==”A”==”A” == “B” ]

[ "$A" == "$B" ]                        #等於         
[ "$A" != "$B" ]                        #不等於    
[ "$A" -eq "$B" ]                        #等於
[ "$A" -ne "$B" ]                        #不等於
[ "$A" -le "$B" ]                        #小於等於
[ "$A" -lt "$B" ]                        #小於
[ "$A" -ge "$B" ]                        #大於等於
[ "$A" -gt "$B" ]                        #大於
[ "$A" -ne "$B" -a "$A" -gt "$B" ]                #整數1不等於整數2話並且整數1大於整數2
[ "$A" -ne "$B" -o "$A" -gt "$B" ]              #整數1不等於整數2話或者整數1大於整數2
[ -z "$A" ]                            #字串的長度是否為零
[ -n "$A" ]                            # 字串的長度非零
[ "file1" -ef "file2" ]                     #兩個檔案是否為同一個檔案,可用於硬連線。主要判斷兩個檔案是否指向同一個inode。      
[ "file1" -nt "file2" ]                     #判斷檔案1是否比檔案2新
[ "file1" -ot "file2" ]                     #判斷檔案1比是否檔案2舊
[ -e "file" ]                           #如果檔案存在,則為真;
[ -f "file"  ]                          #如果檔案為一個普通檔案,則為真;
[ -S "file" ]                           #如果檔案為一個套接字特殊檔案,則為真;
[ -b "file" ]                               #如果檔案為一個塊特殊檔案,則為真;
[ -d "file" ]                           #如果檔案為一個目錄,則為真;
[ -c "file" ]                           #如果檔案為一個字元特殊檔案,則為真;

6,shell中的文字處理:
1)grep 命令是一種強大的文字搜尋工具,根據使用者指定的“模式”對目標文字進行匹配檢查,列印匹配到的行

grep    匹配條件        處理檔案
例如
grep          root      passwd   #過濾含有root的行
grep         ^root      passwd   #過濾以root開頭的行
grep          root$        passwd   #過濾以root結尾的行
grep       -i    root       passwd   #過濾含有root的行
grep      -E    "root|ROOT" passwd   #不區分大小寫過含有root的行
#準確匹配關鍵字:
\<關鍵字
關鍵字\>
\<關鍵字\>

2)sed 行編輯器
stream editor(流編輯器)
用來操作純 ASCII 碼的文字
處理時,把當 前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space)可以指定僅僅處理哪些行
sed 符合模式條件的處理 不符合條件的不予處理
處理完成之後把緩衝區的內容送往螢幕
接著處理下一行,這樣不斷重複,直到檔案末尾

sed 對字元的處理
p 顯示
d 刪除
a 新增
c 替換
w 寫入
i 插入

p模式操作
sed -n ‘/:/p’ fstab
sed -n ‘/UUID$/p’ fstab
sed -n ‘/^UUID/p’ fstab
sed -n ‘2,6p’ fstab
sed -n ‘2,6!p’ fstab

d模式操作
sed ‘/^UUID/d’ /etc/fstab
sed ‘/^#/d’ /etc/fstab
sed ‘/^$/d’/etc/fstab #顯示以空格開頭,空格結尾
sed ‘1,4d’/etc/fstab
sed –n ‘/^UUID/!d’ /etc/fstab