2011年12月13日 星期二

檢視檔案內容相關指令 nl、cat、grep...

這裡存放一些用來可以檢視檔案內容的命令

echo
$echo hello                   --在螢幕上顯示 hello

echo 這個指令是將之後的字串顯示在螢幕上,所以並沒有辦法直接看見檔案的內容,不過在編輯檔案時,在檔案裡加上 echo hello 的話,執行檔案時畫面上就會直接顯示出 hello 這個字

nl
$nl abc                       --顯示內容並加上行號

$nl -b a -n rz abc       --以6位數顯示行號如 : 000001、000002

參數:
-b :指定行號指定的方式,主要有兩種:

           -b a :表示不論是否為空行,也同樣列出行號
           -b t  :如果有空行,空的那一行不要列出行號

-n :列出行號表示的方法,主要有三種:

          -n ln :行號在螢幕的最左方顯示
          -n rn :行號在自己欄位的最右方顯示,且不加 0
          -n rz :行號在自己欄位的最右方顯示,且加 0

cat
$cat abc                         --顯示 abc 這個檔案的內容

$cat -n abc                     --顯示出來的內容會加上行號

head
$head -n 10 /var/log/syslog             --只顯示檔案的頭 10 行

$head -n -100 /var/log/syslog          --檔案的後 100 行都不顯示

netstat -an | head -n 10                   --進階用法,顯示 port | 並只顯示前10行

tail
$tail /var/log/messages                   --從檔案的末端開始顯示內容 ( 預設顯示 10 行 )

$tail -n 30 /var/log/messages          --從檔案的末端開始顯示 30 行的內容

grep
$grep 'test' abc                   --將 abc 這個文件裡有 test 這個字的整行顯示出來

$grep 'test' aa bb cc           --從 aa、bb、cc 這三個檔案裡將有 test 這個字的整行顯示出來

基本參數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行
--color=auto : 將找到的關鍵字部分加上顏色的顯示
進階用法
-A :後面可加數字,為 after 的意思,除了列出該行外,後續的 n 行也列出來
-B :後面可加數字,為 befer 的意思,除了列出該行外,前面的 n 行也列出來
--color=auto 可將正確的那個擷取資料列出顏色
 
$ifconfig -a | grep -A1 eth0       --抓取 eth0 那行並將後面一行也顯示出來 

cut
$cat abc | cut -d -f ':' 2,3          --顯示 abc 的內容並以 : 號為分界只抓取第二段及第三段


-d :後面接分隔字元。與 -f 一起使用
-f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思
-c :以字元 (characters) 的單位取出固定字元區間

變數處裡
${  }          --專門用在處理變數上

$user = a01 : a02 : a03
$echo ${user#*:}             --從左至右尋找第一個 : 字號並刪除 : 字前面的字元 ( * 為萬用字元 )
a02 : a03                        --顯示結果

$user = a01 : a02 : a03

$echo ${user##*:}           --從左至右尋找最後一個 : 字號並刪除 : 字前面的字元
a03                                 --顯示結果

$user = a01 : a02 : a03
$echo ${user%:*}            --從右至左尋找第一個 : 字號並刪除 : 字後面的字元 ( * 為萬用字元 )
a01 : a02                         --顯示結果

$user = a01 : a02 : a03
$echo ${user%%:*}         --從右至左尋找最後一個 : 字號並刪除 : 字後面的字元
a01                                  --顯示結果

範例 : 
$name = $(cat /etc/passwd | grep student)      --顯示帳號檔案並只抓取有 student 的行列放進
                                                                             name 這個變數中
$() : 是變數中用來處理命令的方式

$n1 = ${name%%:*}     --從 name 變數中從右至左尋找最後一個 : 字號並刪除 : 字後面的字

$echo $n1                    --顯示 n1 裡的內容
student                         --顯示結果,這行只剩下 student ,其他的都被刪除了

沒有留言:

張貼留言