Viewing File Content
用來檢視檔案內容的指令常用有:

 



cat
將檔案內容,一次全部輸出到螢幕上
option
-b:前面加上行數
-A:顯示所有字元,包括特殊符號



less
與cat一樣會將結果輸出在螢幕上,但是一次只輸出一頁,而且可以上下翻頁,內建ㄧ些指令,是個很方便的檔案瀏覽器。其實使用man查詢瀏覽文件時就是使用這個指令。
快速鍵:
space :往下翻一頁
b :往上翻一頁
Enter :往下移動一行
k :往上移動一行
g :跳到第一頁
G :跳到最後一頁
/text :搜尋 text
n :下一個符合 text的文字
N :上一個符合 text的文字
q :離開
v :切換到 vi


Viewing File Excerpts

head
預設會顯示檔案的前10行內容
option
-n :顯示檔案的前 n 行。-n 5或是-5都可以。

預設顯示前10行:
[root@localhost CH8]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:

使用-5來指定顯示前五行
[root@localhost CH8]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


tail
預設會顯示檔案的後10行內容
option
-n :顯示檔案的後 n 行
-f :持續顯示,如果該檔案有新的內容會即時顯示出來。這個功能在看log非常好用。


Extracting Text by Keyword

grep
指定關鍵字,並將符合關鍵字的那行輸出在螢幕上。
grep option keyword file
option
-i:忽略大小寫
-n:輸出行數
-v:反向輸出,也就是不符合keyword的才輸出在螢幕上
-r:遞迴整個目錄
--color=auto:將結果裡的關鍵字用特殊顏色標記
keyword,grep支援正規表示法,如果要使用正規表示法,keyword要用''框起來,'keyword'

找出/etc/passwd裡面含有xiang的資料
[root@localhost CH8]# grep xiang /etc/passwd
xiang:x:500:500::/home/xiang:/bin/bash
xiang3:x:502:502::/home/xiang3:/bin/bash
xiang2:x:503:503::/home/xiang2:/bin/bash

列出/etc/passwd裡面沒有xiang的資料(省略輸出)
[root@localhost CH8]# grep -v xiang /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync


Extracting Text by Column or Field

cut
這個指令可以將指定的欄位輸出到螢幕上:
cut option file
option
-d:指定分隔符號,預設是TAB
-f:指定輸出的欄位
-c:指定輸出的字元

使用/etc/passwd作範例,在這個檔案裡,每個欄位都會用:隔開,因此我們就可以將它當作分格符號來使用(-d:),-f可以指定要輸出第幾個欄位:
[root@localhost CH8]# cut -d: -f7 /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin

輸出/etc/passwd檔案裡,每行的第三到第八個字元:
[root@localhost CH8]# cut -c3-8 /etc/passwd
ot:x:0
n:x:1:
emon:x
m:x:3:


Gathering Text Statistics

wc
對資料作計算,包括行數、字元數、多少字等等:
wc option file
option
-l:計算行數
-m:計算多少單字
-w:計算多少字元
-c:計算檔案大小(byte)

[root@localhost CH8]# wc passwd
57 81 2612 passwd

三個數字各代表行、字數、字元數,沒有加任何參數的話,預設會顯示這三種,如果只要看其中一種,將上參數就好了:

[root@localhost CH8]# wc -l passwd
57 passwd
計算出有幾行。


sort
將文字內容重新排列過,這樣會更方便閱讀
sort option file
option:
-r:反向排序
-n:依數字進行排序,預設是文字排序喔
-f:忽略大小寫
-u:就是uniq,當有同樣的內容時,只輸出一次
-t:分隔符號
-k:以那個欄位 (field) 進行排序

sort-1裡的內容:
[root@localhost lab]# cat sort-1
12
9
6
56

沒加任何參數時,預設是用"文字"排序喔:
[root@localhost lab]# sort sort-1
12
56
6
9

使用-n排序,跟上面比起來,知道意思了吧!
[root@localhost lab]# sort -n sort-1
6
9
12
56

反向排序
[root@localhost lab]# sort -r sort-1
9
6
56
12

使用:作為分隔的符號,用它的第3個欄位來作排序
[root@localhost CH8]# sort -t: -k 3 passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
rpm:x:37:37:RPM user:/var/lib/rpm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin


uniq
將資料印出,並將有重複的資料只輸出一筆
uniq option file
option:
-i:忽略大小寫
-c:計算次數

計算每筆資料出現的次數,要注意,uniq只對連續的資料有用,所以要先作排序,將同樣的資料集中在一起
[root@localhost CH8]# sort passwd |uniq -c
1 news:x:9:13:news:/etc/news:
1 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
1 nobody:x:99:99:Nobody:/:/sbin/nologin
1 nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
1 ntp:x:38:38::/etc/ntp:/sbin/nologin
1 operator:x:11:0:operator:/root:/sbin/nologin
1 plone:x:501:501::/home/plone:/bin/false
1 polkituser:x:87:87:PolicyKit:/:/sbin/nologin
7 pulse:x:499:497:PulseAudio daemon:/:/sbin/nologin
6 root:x:0:0:root:/root:/bin/bash
1 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
1 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin


Compare Diles
diff

這可以用來比對兩個檔案的差異,比對的檔案必須要很相近才有意義。比對server的設定檔,也是滿常用的。
diff option file1 file2
option:
-b :忽略多個空白的差異,例如 "about me" 與 "about me" 視為相同
-B :忽略空白行
-i :忽略大小寫

5c5,左邊的數字5代表file1的第五行,右邊的數字5代表file2的第五行,底下的< 代表file1第五行的內容,>代表file2第五行的內容,這樣一下就可以看出來哪幾行有甚麼不同
[root@localhost lab]# diff file1 file2
5c5
< use_widgets = no
---
> use_widgets = yes


Tools for Manipulating Text
sed

修改、取代、新增指定的文字。執行完的結果,並不會修改原來的檔案,僅僅只是將結果輸出到螢幕

sed 's/dog/cat/g' file
s/dog/cat/g:
s 代表在哪幾行搜尋,沒指定就是整個檔案。1,50s 搜尋1到50行。/digbt/,/duncan/ 從digbt字串開始搜尋,到duncan字串停止
dog 要替換的字串
cat 要替換成的字串
g global的意思,如果沒有加,預設找到每行第一個字就停止


f

xiangyang17 發表在 痞客邦 留言(0) 人氣()