Linux 操做系統中有不少文件:配置文件、文本文件、文檔文件、日誌文件、用戶文件,這個清單還在不斷增加。一般,這些文件都包含了要查找重要數據所須要訪問的一些信息。儘管咱們能夠簡單地使用諸如 cat、more 之類的標準工具將大部分文件的內容輸出到屏幕上,可是系統中有更加合適的工具能夠對文本進行過濾和處理,這樣就能夠只關心咱們想要的內容。正則表達式
在閱讀本文的過程當中,您能夠打開 shell 並體驗一下每一個工具的例子。shell
正則表達式express
在開始以前,咱們須要首先理解什麼是正則表達式,以及如何使用正則表達式。編程
在最簡單的形式中,正則表達式(regular expression)是用來在文件中定位文本的一些搜索標準。例如,要查找全部包含單詞 「admin」 的行,咱們就能夠對 「admin」 進行搜索。所以,「admin」 就構成了一個正則表達式。若是咱們不但但願查找 「admin」,並且還想將其替換成 「root」,那麼咱們就能夠在一個工具中使用適當的命令將 「admin」 替換成 「root」。它們都構成了正則表達式。bash
正則表達式所採用的一些基本規則以下:dom
任何單個字符或一串字符均可以匹配字符自己,例如上面的 「admin」 的例子。ssh
^ 符號(^)表示一行的開始;$ 符號($)表示一行的結束。electron
要搜索特殊字符(例如 $ 符號),須要在這些字符前面加上反斜線(\)。例如, \$ 就表示查找 $,而不是一行的末尾。編程語言
點(.)表明任何單個字符。例如,ad..n 表明 5 個字符項,前兩個字符是 「ad」,最後一個字符是 「n」。中間兩個字符能夠是任何字符,可是隻能是由兩個字符組成。ide
任什麼時候候若是正則表達式包含在斜線中(例如 /re/),搜索就是經過文件順序進行的。若是正則表達式包含在問號中(例如,?re?),搜索就是經過文件逆序進行的。
方括號([])表示多個值,減號(-)表示值的範圍。例如,[0-9] 與 [0123456789] 相同,[a-z] 就等效於搜索任何小寫字符。若是一個列表的首字符是 ^ 符號,它就匹配不在這個清單中的任何字符。
表 1 給出了這些規則是如何真正進行匹配的。
表 1. 示例正則表達式
例子 說明
[abc] 匹配 「a」、「b」、「c」 之一
[a-z] 匹配從 「a」 到 「z」 的任何一個小寫字符
[A-Z] 匹配從 「A」 到 「Z」 的任何一個大寫字符
[0-9] 匹配從 0 到 9 的任何一個數字
[^0-9] 匹配任何除了 0 到 9 數字範圍內的任何字符
[-0-9] 匹配從 0 到 9 的任何數字,或者是短橫線(-)
[0-9-] 匹配從 0 到 9 的任何數字,或者是短橫線(-)
[^-0-9] 匹配除從 0 到 9 的數字和短橫線(-)以外的任何字符
[a-zA-Z0-9] 匹配任何字符或數字
瞭解了這些信息,下面讓咱們開始看一下相關工具。
回頁首
grep
grep 工具的工做方式是對文件的每一行搜索給定字符串的首次出現。若是找到了這個字符串,就打印該行的內容;不然就不對該行進行打印。下面這個文件我稱之爲 「memo」,闡述了 grep 的用法和結果。
To: All Employees
From: Human Resources
In order to better serve the needs of our mass market customers, ABC Publishing is integrating the groups selling to this channel for ABC General Reference and ABC Computer Publishing. This change will allow us to better coordinate our selling and marketing efforts, as well as simplify ABC's relationships with these customers in the areas of customer service, co-op management, and credit and collection. Two national account managers, Ricky Ponting and Greeme Smith, have joined the sales team as a result of these changes.
To achieve this goal, we have also organized the new mass sales group into three distinct teams reporting to our current sales directors, Stephen Fleming and Boris Baker. I have outlined below the national account managers and their respective accounts in each of the teams. We have also hired two new national account managers and a new sales administrator to complete our account coverage. They include:
Sachin Tendulkar, who joins us from XYZ Consumer Electronics as a national account manager covering traditional mass merchants.
Brian Lara, who comes to us via PQR Company and will be responsible for managing our West Coast territory.
Shane Warne, who will become an account administrator for our warehouse clubs business and joins us from DEF division.
Effectively, we have seven new faces on board:
1. RICKY PONTING
2. GREEME SMITH
3. STEPHEN FLEMING
4. BORIS BAKER
5. SACHIN TENDULKAR
6. BRIAN LARA
7. SHANE WARNE
Please join me in welcoming each of our new team members.
舉一個簡單的例子來講,要查找包含 「welcoming」 單詞的行,最好的方法是使用下面的命令行:
# grep welcoming memo
Please join me in welcoming each of our new team members.
若是您想查找單詞 「market」,結果會有很大的不一樣,以下所示:
# grep market memo
In order to better serve the needs of our mass
market customers, ABC Publishing is
integrating the groups selling to this channel
for ABC General Reference and ABC Computer
Publishing. This change will allow us to
better coordinate our selling and marketing
efforts, as well as simplify ABC's
relationships with these customers in the
areas of customer service, co-op management,
and credit and collection. Two national
account managers, Ricky Ponting and Greeme
Smith, have joined the sales team as a result
of these changes.
注意咱們找到了兩個匹配項:咱們但願找的 「market」 和 「marketing」。若是在這個文件中還存在 「marketable」 或 「marketed」 之類的單詞,那麼上面的命令也會顯示包含這些單詞的行的內容。
在 grep 中可使用通配符和元字符,我強烈建議將它們放到引號中,這樣 shell 就不會將它們解釋成命令了。
要查找全部包含數字的行,請使用下面的命令:
# grep "[0-9]" memo
1. RICKY PONTING
2. GREEME SMITH
3. STEPHEN FLEMING
4. BORIS BAKER
5. SACHIN TENDULKAR
6. BRIAN LARA
7. SHANE WARNE
要查找全部包含 「the」 的行,請使用下面的命令:
# grep the memo
In order to better serve the needs of our mass
market customers, ABC Publishing is
integrating the groups selling to this channel
for ABC General Reference and ABC Computer
Publishing. This change will allow us to
better coordinate our selling and marketing
efforts, as well as simplify ABC's
relationships with these customers in the
areas of customer service, co-op management,
and credit and collection. Two national
account managers, Ricky Ponting and Greeme
Smith, have joined the sales team as a result
of these changes.
To achieve this goal, we have also organized
the new mass sales group into three distinct
teams reporting to our current sales
directors, Stephen Flemming and Boris Baker. I
have outlined below the national account
managers and their respective accounts in each
of the teams. We have also hired two new
national account managers and a new sales
administrator to complete our account
coverage. They include:
正如您可能已經注意到的同樣,輸出結果中包含了單詞 「these」,還有單詞 「the」 的一些精確匹配。
grep 工具,與不少其餘 UNIX/Linux 工具同樣,都是大小寫敏感的,這意味着查找 「The」 和 「the」 會產生徹底不一樣的結果。
# grep The memo
To achieve this goal, we have also organized
the new mass sales group into three distinct
teams reporting to our current sales
directors, Stephen Flemming and Boris Baker. I
have outlined below the national account
managers and their respective accounts in each
of the teams. We have also hired two new
national account managers and a new sales
administrator to complete our account
coverage. They include:
若是您想查找一個特定的單詞或短語,但卻不太關心它們的大小寫,那可使用兩種方法。第一種方法是使用方括號同時查找 「The」 和 「the」,以下所示:
# grep "[T, t]he" memo
In order to better serve the needs of our mass
market customers, ABC Publishing is
integrating the groups selling to this channel
for ABC General Reference and ABC Computer
Publishing. This change will allow us to
better coordinate our selling and marketing
efforts, as well as simplify ABC's
relationships with these customers in the
areas of customer service, co-op management,
and credit and collection. Two national
account managers, Ricky Ponting and Greeme
Smith, have joined the sales team as a result
of these changes.
To achieve this goal, we have also organized
the new mass sales group into three distinct
teams reporting to our current sales
directors, Stephen Flemming and Boris Baker. I
have outlined below the national account
managers and their respective accounts in each
of the teams. We have also hired two new
national account managers and a new sales
administrator to complete our account
coverage. They include:
第二種方法是使用 -i 選項,這告訴 grep 忽略大小寫的敏感性。
# grep -i the memo
In order to better serve the needs of our mass
market customers, ABC Publishing is
integrating the groups selling to this channel
for ABC General Reference and ABC Computer
Publishing. This change will allow us to
better coordinate our selling and marketing
efforts, as well as simplify ABC's
relationships with these customers in the
areas of customer service, co-op management,
and credit and collection. Two national
account managers, Ricky Ponting and Greeme
Smith, have joined the sales team as a result
of these changes.
To achieve this goal, we have also organized
the new mass sales group into three distinct
teams reporting to our current sales
directors, Stephen Flemming and Boris Baker. I
have outlined below the national account
managers and their respective accounts in each
of the teams. We have also hired two new
national account managers and a new sales
administrator to complete our account
coverage. They include:
除了 -i 選項以外,還有另外幾個命令行選項能夠用來改變 grep 的輸出結果。最多見的選項以下所示:
-c —— 屏蔽正常輸出;相反,打印每一個輸入文件的匹配行數。
-l —— 屏蔽正常輸出;相反,打印包含正常輸出內容的每一個輸入文件的名字。
-n —— 在每行輸出前面加上該行在輸入文件中的行號做爲前綴。
-v —— 將匹配意義進行逆反 —— 即選擇那些不 匹配搜索條件的行。
回頁首
fgrep
fgrep 會對文件搜索某個字符串,並打印包含這個字符串的全部行的內容。與 grep 不一樣的是,fgrep 搜索的是一個字符串,而不是能夠匹配某個表達式的一種模式。fgrep 能夠看做是 grep 在如下方面進行了加強:
一次能夠搜索多個對象。
fgrep 工具一般速度都比 grep 更快。
咱們不能使用 fgrep 來搜索使用模式的正則表達式。
假設咱們但願從前面的 memo 文件中提取所有由大寫字母組成的名字。爲了查找 「STEPHEN」 和 「BRIAN」,咱們須要執行兩個單獨的 grep 命令,以下所示:
# grep STEPHEN memo
3. STEPHEN FLEMING
# grep BRIAN memo
6. BRIAN LARA
使用 fgrep,只須要一個命令就能夠實現相同的任務:
# fgrep "STEPHEN
> BRIAN" memo
3. STEPHEN FLEMING
6. BRIAN LARA
注意在這兩項之間須要使用回車符號。若是沒有這個回車符號,搜索就變成了查找一行中的 「STEPHEN BRIAN」。有了這個回車符號以後,它就會查找 「STEPHEN」 的匹配項,以及匹配 「BRIAN」 的項。
還要注意在目標文本兩側必需要放上引號。這樣能夠將文本與文件名區分開來。
除了在命令行上指定搜索項以外,咱們也能夠將它們放到一個文件中,並使用這個文件的內容來搜索其餘文件。-f 選項讓咱們能夠指定一個包含搜索項的主文件,其中能夠列出常常搜索的內容。
舉例來講,咱們能夠想像一個名爲 「search_items」 的文件,其中包含了咱們但願搜索的兩項內容:
# cat search_items
STEPHEN
BRIAN
下面的命令在前面的 memo 文件中搜索 「STEPHEN」 和 「BRIAN」:
# fgrep -f search_items memo
3. STEPHEN FLEMING
6. BRIAN LARA
回頁首
egrep
egrep 是 grep 的一個功能更增強大的版本,它讓咱們能夠一次搜索多個對象。要搜索的對象是使用回車符(與 fgrep 同樣)或管道符(|)來分隔的。
# egrep "STEPHEN
> BRIAN" memo
3. STEPHEN FLEMING
6. BRIAN LARA
# egrep "STEPHEN | BRIAN" memo
3. STEPHEN FLEMING
6. BRIAN LARA
上面這兩個命令均可以完成相同的工做。
除了搜索多個目標的功能以外,egrep 還提供了重複搜索和分組搜索的功能:
? 查找問號前面字符的零次匹配或一次匹配。
+ 查找加號前面字符的一次或屢次匹配。
( ) 表示一個分組。
例如,假設您不記得 Brian 的姓是 「Lara」 仍是 「Laras」。
# egrep "LARAS?" memo
6. BRIAN LARA
此次搜索會輸出同時匹配 「LARA」 和 「LARAS」 的項。下面的搜索稍微有些不一樣:
# egrep "STEPHEN+" memo
3. STEPHEN FLEMING
它能夠與 「STEPHEN」、「STEPHENN」、「STEPHENNN」 等匹配。
若是您正在查找一個單詞加上它的一個派生詞,能夠在圓括號中包含派生詞的標誌字符。
# egrep -i "electron(ic)?s" memo
Sachin Tendulkar, who joins us from XYZ Consumer
Electronics as a national account manager covering
traditional mass merchants.
這會查找能夠匹配 「electrons」 的項和能夠匹配 「electronics」 的項。
總結一下:
+ 號後面的正則表達式能夠匹配這個正則表達式的一次或屢次出現。
? 號後面的正則表達式能夠匹配這個正則表達式的零次或一次出現。
使用 | 符號或回車符分隔開的正則表達式會返回能夠與任意一個表達式匹配的字符串。
正則表達式能夠放到圓括號 ( ) 中進行分組。
咱們可使用的命令行參數包括 -c、-f、-i、-l、-n 和 -v。
回頁首
grep 工具:一個真實的例子
grep 系列工具能夠用於任何文本格式的系統文件,以便查找某行中的匹配項。例如,要在 /etc/passwd 文件中查找用戶 「root」 的項,可使用下面的命令:
# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
因爲 grep 會查找這個文件中的某個匹配項,所以這個命令會查找到 「root」 和 「operator」 這兩項。若是咱們但願只查找用戶名爲 「root」 的項,能夠將這個命令修改爲下面的樣子:
# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
回頁首
cut
使用 cut 工具,咱們能夠將構成文件中數據域的各個列分隔開來。默認的分隔符是製表符,-f 選項能夠用來指定但願顯示的域。
舉例來講,假設一個文本文件 「sample」 有三列,其內容以下所示:
one two three
four five six
seven eight nine
ten eleven twelve
如今執行下面的命令:
# cut -f2 sample
這會返回:
two
five
eight
eleven
若是將這個命令修改爲:
# cut -f1, 3 sample
這會返回下面的不一樣結果:
one three
four six
seven nine
ten twelve
這個命令有幾個命令行選項。除了 -f 以外,咱們還應該熟悉下面兩個選項:
-c —— 容許咱們指定字符而不是域。
-d —— 容許咱們指定其餘分隔符,而不是製表符。
回頁首
cut:兩個實際例子
ls -l 命令能夠顯示某個目錄中全部文件的權限、連接個數、屬主、組、大小、日期和文件名 —— 這些都是以空格分隔開的。若是咱們對大部分域都不感興趣,而是隻但願瞭解文件屬主的信息,可使用下面的命令:
# ls -l | cut -d" " -f5
root
562
root
root
root
root
root
root
這個命令只會顯示文件屬主(第 5 個域),而會忽略其餘域。
若是您知道文件屬主信息開始的第一個字符的確切位置,可使用 -c 選項來顯示文件屬主的第一個字符。假設它是從第 16 個字符開始的,下面這個命令就返回第 16 個字符,這是文件屬主名的第一個字符。
# ls -l | cut -c16
r
r
r
r
r
r
r
若是咱們再假設大部分用戶都使用最多 8 個字符做爲本身的用戶名,那麼咱們就可使用下面的命令:
# ls -l | cut -c16-24
這會返回用戶名域的那些項。
如今假設文件名是從第 55 個字符開始的,可是咱們沒法肯定文件名會連續佔用多少個字符,由於有些文件名可能會比其餘文件名長不少。解決方案是從第 55 個字符開始,但卻不指定結束字符(這意味着咱們要截取該行中全部剩餘的內容),以下所示:
# ls -l | cut -c55-
a.out
cscope-15.5
cscope-15.5.tar
cscope.out
memo
search_items
test.c
test.s
如今咱們來考慮另一種狀況。爲了得到系統中全部用戶的清單,咱們能夠從前面使用過的 /etc/passwd 文件中提取第一個域:
# cut -d":" -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
要蒐集用戶名及其對應的主目錄,咱們能夠提取第 1 個和第 6 個域的內容:
# cut -d":" -f1,6 /etc/passwd
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
lp:/var/spool/lpd
sync:/sbin
shutdown:/sbin
halt:/sbin
mail:/var/spool/mail
news:/etc/news
uucp:/var/spool/uucp
operator:/root
回頁首
paste
paste 工具能夠對文件中的域進行合併。它從每一個源文件中提取一行內容,並將其與另一個源文件中的一行內容合併在一塊兒。
舉例來講,假設文件 「fileone」 的內容以下所示:
IBM
Global
Services
另外,咱們還有一個 「filetwo」 文件,其內容以下所示:
United States
United Kingdom
India
下面的命令將這兩個文件的內容合併在一塊兒,以下所示:
# paste fileone filetwo
IBM United States
Global United Kingdom
Services India
若是 fileone 中的行數比 filetwo 多,那麼 paste 操做依然會繼續,不過在製表符後面是一些空項。
製表符字符是默認的分隔符,可是咱們可使用 -d 選項將其修改爲任何其餘值。
# paste -d", " fileone filetwo
IBM, United States
Global, United Kingdom
Services, India
咱們也可使用 -s 選項將 fileone 的內容在一行中輸出,後面加上一個回車鍵,而後再顯示 filetwo 的內容。
# paste -s fileone filetwo
IBM Global Services
United States United Kingdom India
回頁首
join
join 是 paste 的一個很好的加強版本。join 只有在所要鏈接的文件共享某個共同的域時纔會工做。
舉例來講,考慮咱們上面介紹 paste 時所使用的兩個文件。下面是在使用 join 對其進行合併時所發生的事情:
# join fileone filetwo
注意這並無顯示任何東西。join 工具必需要在所操做的文件之間找到共同的域,默認狀況下,它指望這個共同的域就是第一個域。
要了解這是如何工做的,咱們能夠嘗試添加一些新內容。假設 fileone 如今包含如下內容:
aaaa Jurassic Park
bbbb AI
cccc The Ring
dddd The Mummy
eeee Titanic
filetwo 如今包含如下內容:
aaaa Neil 1111
bbbb Steven 2222
cccc Naomi 3333
dddd Brendan 4444
eeee Kate 5555
如今,再次嘗試下面的命令:
# join fileone filetwo
aaaa Jurassic Park Neil 1111
bbbb AI Steven 2222
cccc The Ring Naomi 3333
dddd The Mummy Brendan 4444
eeee Titanic Kate 5555
此時第一個域相同的地方就會被識別出來,匹配項也就進行了合併。paste 是盲目地從每一個文件中提取內容並建立輸出結果;而 join 則是隻合併那些匹配的行,這種匹配必須很是精確。舉例來講,假設您向 filetwo 文件中添加一行內容:
aaaa Neil 1111
bbbb Steven 2222
ffff Elisha 6666
cccc Naomi 3333
dddd Brendan 4444
eeee Kate 5555
如今這個命令只會產生下面的輸出結果了:
# join fileone filetwo
aaaa Jurassic Park Neil 1111
bbbb AI Steven 2222
只要這兩個文件再也不匹配了,就不會再執行任何操做了。第一個文件的每一行都匹配且只匹配於第二個文件相同行的默認域。若是找到匹配項,它們就會組成輸出;不然就再也不執行任何操做了。
默認狀況下,join 只會查找第一個域進行匹配,並輸出全部列的內容;不過咱們能夠對這種行爲進行修改。-1 選項讓咱們能夠指定使用哪一個域做爲 fileone 中的匹配項, -2 選項讓咱們能夠指定使用哪一個域做爲 filetwo 中的匹配項。
舉例來講,要對 fileone 的第二個域和 filetwo 的第三個域進行匹配,咱們可使用下面的語法:
# join -1 2 -2 3 fileone filetwo
-o 選項能夠以 {file.field} 格式來指定輸出結果。所以,要在匹配行上打印 fileone 的第二個域和 filetwo 的第三個域,語法爲:
# join -o 1.2 -o 2.3 fileone filetwo
回頁首
join:一個實際的例子
在實踐中可使用 join 工具最明顯的方法是從 /etc/passwd 中提取用戶名和對應的主目錄項,並從 /etc/group 文件中提取組名。組名在 /etc/passwd 文件中是以數字的格式出如今第四個域中的。相似地,它們在 /etc/group 文件中是在第三個域中出現的。
# join -1 4 -2 3 -o 1.1 -o 2.1 -o 1.6 -t":" /etc/passwd /etc/group
root:root:/root
bin:bin:/bin
daemon:daemon:/sbin
adm:adm:/var/adm
lp:lp:/var/spool/lpd
nobody:nobody:/
vcsa:vcsa:/dev
rpm:rpm:/var/lib/rpm
nscd:nscd:/
ident:ident:/home/ident
netdump:netdump:/var/crash
sshd:sshd:/var/empty/sshd
rpc:rpc:/
回頁首
awk
awk 是 Linux 上功能最爲強大的工具之一。它自己其實是一種編程語言,能夠實現複雜的邏輯語句,還能夠簡化部分文本的提取。在本文那中咱們將不會詳細對其進行介紹,而是快速瞭解一下它的語法,並嘗試幾個實際的例子。
awk 命令包括一個模式和由一條或多條語句構成的操做,語法以下所示:
awk '/pattern/ {action}' file
請注意:
awk 測試指定文件中的每一個記錄是否符合模式匹配。若是找到匹配項,就執行指定的操做。
awk 能夠在管道中做爲過濾器,若是沒有指定文件,它也能夠從鍵盤(標準輸入)中接收輸入。
一種很是有用的操做是打印數據!下面是如何引用一條記錄中的域。
$0 —— 整條記錄
$1 —— 該記錄中的第一個域
$2 —— 該記錄中的第二個域
咱們還能夠從一條記錄中提取多個域,之間使用逗號分開。
舉例來講,要提取 /etc/passwd 文件中的第 6 個域,命令以下:
# awk -F: '{print $6}' /etc/passwd
/root
/bin
/sbin
/var/adm
/var/spool/lpd
/sbin
/sbin
/sbin
/var/spool/mail
/etc/news
/var/spool/uucp
注意 -F 是由預先定義的 FS 變量所定義的輸入域分隔符。在咱們這個例子中是空格。
要從 /etc/passwd 文件中提取第一個和第六個域,命令以下:
# awk -F: '{print $1,$6}' /etc/passwd
root /root
bin /bin
daemon /sbin
adm /var/adm
lp /var/spool/lpd
sync /sbin
shutdown /sbin
halt /sbin
mail /var/spool/mail
news /etc/news
uucp /var/spool/uucp
operator /root
要在域之間使用短橫線代替冒號來打印這個文件的內容,命令以下:
# awk -F: '{OFS="-"}{print $1,$6}' /etc/passwd
root-/root
bin-/bin
daemon-/sbin
adm-/var/adm
lp-/var/spool/lpd
sync-/sbin
shutdown-/sbin
halt-/sbin
mail-/var/spool/mail
news-/etc/news
uucp-/var/spool/uucp
operator-/root
要使用短橫線做爲域之間的分隔符來打印文件,而且只以逆序打印第一個域和第六個域,命令以下:
# awk -F: '{OFS="-"}{print $6,$1}' /etc/passwd
/root-root
/bin-bin
/sbin-daemon
/var/adm-adm
/var/spool/lpd-lp
/sbin-sync
/sbin-shutdown
/sbin-halt
/var/spool/mail-mail
/etc/news-news
/var/spool/uucp-uucp
/root-operator
回頁首
head
head 工具打印每一個文件的最開始部分的內容(默認是 10 行)。若是沒有給定文件,它就從標準輸入中讀入內容,若是給定了文件名就從文件中讀入內容。
舉例來講,若是咱們但願從 memo 文件中提取前兩行內容,命令以下:
# head -2 memo
In order to better serve the needs of our mass
market customers, ABC Publishing is
integrating the groups selling to this channel
for ABC General Reference and ABC Computer
Publishing. This change will allow us to
better coordinate our selling and marketing
efforts, as well as simplify ABC's
relationships with these customers in the
areas of customer service, co-op management,
and credit and collection. Two national
account managers, Ricky Ponting and Greeme
Smith, have joined the sales team as a result
of these changes.
咱們可使用 -c 選項指定要顯示的字節個數。舉例來講,若是咱們但願從 memo 文件中讀取前兩個字節的內容,可使用下面的命令:
# head -c 2 memo
In
回頁首
tail
tail 工具打印每一個文件的最末尾部分的內容(默認是 10 行)。若是沒有給定文件,它就從標準輸入中讀入內容,若是給定了文件名就從文件中讀入內容。
舉例來講,若是咱們但願從 memo 文件中提取最後兩行內容,命令以下:
# tail -2 memo
Please join me in welcoming each of our new team members.
咱們可使用 -c 選項指定要顯示的字節個數。舉例來講,若是咱們但願從 memo 文件中讀取最後五個字節的內容,可使用下面的命令:
# tail -c 5 memo
ers.