----- 最近更新【2022-01-15】-----
本文目錄結(jié)構(gòu)預(yù)覽:
- 一、簡介
- 二、實(shí)用的過濾器(列表)
- 三、簡單的過濾器:cat、split、tac、rev、head、tail
1、cat - 復(fù)制數(shù)據(jù)到標(biāo)準(zhǔn)輸出
2、split - 劃分文件
3、tac - 行反轉(zhuǎn)
4、rev - 字符反轉(zhuǎn)
5、head - 查看開頭
6、tail - 查看末尾 - 四、比較不同:cmp、comm、diff、sdiff
1、cmp - 比較兩個(gè)文件(二進(jìn)制或者文本)
2、comm - 比較兩個(gè)文件(有序文本)
3、diff - 比較兩個(gè)文件(文本)
4、sdiff - 比較兩個(gè)文件(并排比較) - 五、抽取:cut、colrm、paste
1、cut - 抽取指定列
2、colrm - 移除列
3、paste - 組合數(shù)據(jù)列 - 六、統(tǒng)計(jì)和格式化:nl、wc、expand、unexpand、old、fmt、pr
1、nl - 插入行號
2、wc - 單詞統(tǒng)計(jì)
3、expand - 將制表符轉(zhuǎn)換成空格
4、unexpand - 將空格轉(zhuǎn)換成制表符
5、fold - 格式化行
6、fmt - 格式化段落
7、pr - 按頁格式化文本 - 七、查找:grep、look
1、grep - 選取包含特定模式的行
2、look - 選取特定模式開頭的行(有序文本) - 八、排序、組合及變換:sort、uniq、join、tr、sed
1、sort - 排序數(shù)據(jù)
2、uniq - 查找重復(fù)行(有序文本)
3、join - 合并兩個(gè)文件中的數(shù)據(jù)(有序文本)
4、tr - 改變或者刪除指定的字符
5、sed - 非交互文本編輯 - 九、分頁程序:less、more
- 十、參考
一、簡介
過濾器 就是任何能夠從標(biāo)準(zhǔn)輸入讀取文本數(shù)據(jù)并向標(biāo)準(zhǔn)輸出寫入文本數(shù)據(jù)(每次一行)的程序。之前介紹的管道|
命令主要就是結(jié)合過濾器來完成工作,但是管道線中的第一個(gè)和最后一個(gè)程序不必是過濾器。
過濾器每次一行地從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),完成處理后,將結(jié)果每次一行地寫到標(biāo)準(zhǔn)輸出。
二、實(shí)用的過濾器(列表)
過濾器 | 作用 | 備注 |
---|---|---|
awk | 編程語言:操作文本 | |
cat | 組合文件:復(fù)制標(biāo)準(zhǔn)輸入到標(biāo)準(zhǔn)輸出 | |
colrm | 刪除指定的數(shù)據(jù)列 | |
comm | 比較兩個(gè)有序文件,顯示區(qū)別 | |
cmp | 比較兩個(gè)文件 | |
cut | 從數(shù)據(jù)中抽取指定列(字段) | |
diff | 比較兩個(gè)文件,顯示不同 | |
expand | 將制表符轉(zhuǎn)變成空格 | |
fold | 將長行格式化成較短的行 | |
fmt | 格式化段落,從而使它們看上去更漂亮 | |
grep | 選擇包含指定模式的行 | |
head | 從數(shù)據(jù)的開關(guān)選擇行 | |
join | 基于公用字段,組合數(shù)據(jù)列 | |
look | 選擇以指定模式開頭的行 | |
nl | 創(chuàng)建行號 | |
paste | 組合數(shù)據(jù)列 | |
perl | 編程語言:操作文本、文件、進(jìn)程 | |
pr | 將文本格式化為頁或者列 | |
rev | 每行數(shù)據(jù)中的字符反序排列 | |
sdiff | 比較兩個(gè)文件,顯示區(qū)別 | |
sed | 非交互式文本編輯 | |
sort | 排序數(shù)據(jù);檢查數(shù)據(jù)是否有排序 | |
split | 將大文件分隔成較小的文件 | |
strings | 在二進(jìn)制文件中搜索字符串 | |
tac | 組合文件,同時(shí)將文本行的順序反轉(zhuǎn) | |
tail | 從數(shù)據(jù)的末尾選擇行 | |
tr | 改變或者刪除指定的字符 | |
tsort | 根據(jù)偏序創(chuàng)建全序 | |
unexpand | 將空格轉(zhuǎn)變成制表符 | |
uniq | 選擇重復(fù)/唯一行 | |
wc | 統(tǒng)計(jì)行數(shù)、單詞數(shù)和字符數(shù) |
注意:
- 我們常用
less
命令來顯示輸出,但less
并不是每次一行地將數(shù)據(jù)寫到標(biāo)準(zhǔn)輸出。less
允許每次一屏地查看所有的數(shù)據(jù)、向后滾動和向前滾動、搜索具體模式等,所以less
不是過濾器。 -
look
不能從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),它必須從一個(gè)或多個(gè)文件中獲取輸入。所以,嚴(yán)格地講,look
也不是一個(gè)過濾器。 -
more
只能向前分頁瀏覽文件內(nèi)容,more
也不是一個(gè)過濾器。
三、簡單的過濾器:cat、split、tac、rev、head、tail
1、cat - 復(fù)制數(shù)據(jù)到標(biāo)準(zhǔn)輸出
cat 程序?qū)?shù)據(jù)未加改變地復(fù)制到標(biāo)準(zhǔn)輸出。數(shù)據(jù)可以來源于標(biāo)準(zhǔn)輸入或者一個(gè)或多個(gè)文件。(concatenate files and print on the standard output.)
語法:cat [OPTION]... [FILE]...
常用例子:
語法 | 作用 |
---|---|
cat > file |
從鍵盤讀取數(shù)據(jù),創(chuàng)建新文件或者替換已有文件 |
cat >> file |
從鍵盤讀取數(shù)據(jù),將數(shù)據(jù)追加到已有文件中 |
cat < file 或者 cat file
|
顯示一個(gè)已有文件 |
cat < file1 > file2 |
復(fù)制文件 |
cat file1 file2 file3 |
組合多個(gè)文件,一次一屏地顯示結(jié)果 |
cat file1 file2 file3 > file4 |
組合多個(gè)文件,將輸出保存到一個(gè)不同文件中 |
cat file1 file2 file3 | program |
組合多個(gè)文件,將輸出管道傳送給另一個(gè)程序 |
cat 命令常用選項(xiàng):
-
-n
,(number) 在每行前面加一個(gè)行號 -
-b
,(blank) 與 -n 選項(xiàng)一起使用,告訴cat不要對空白行編號 -
-s
,(squeeze) 將多個(gè)連續(xù)空白行替換為一個(gè)空白行
2、split - 劃分文件
split 將一個(gè)大文件劃分成幾個(gè)較小的文件。(split a file into pieces)
語法:split [OPTION]... [FILE [PREFIX]]
常用組合:split [-d] [-a num] [-l lines] [file [prefix]]
-
-a num
,num是創(chuàng)建文件名時(shí)用作文件名后綴的字符或數(shù)字的數(shù)量,默認(rèn)是aa、ab、ac... -
-d
,(digits)使用數(shù)字作為文件名后綴,默認(rèn)從00開始。 -
-l lines
,lines是每個(gè)新文件所包含的最大行數(shù),默認(rèn)是1000。 -
file
,輸入文件的名稱。 -
prefix
,輸出文件名稱的前綴,默認(rèn)是x。
例:
split -d -l 5000 filename newfile_
3、tac - 行反轉(zhuǎn)
tac 在將文本寫入到標(biāo)準(zhǔn)輸出之前將文本行的順序反轉(zhuǎn)(名稱tac就是cat的反向拼寫)。(concatenate and print files in reverse)
語法:tac [OPTION]... [FILE]...
例:
tac file1 fiel2 file3 | less
4、rev - 字符反轉(zhuǎn)
rev 將文本各行中字符的順序反轉(zhuǎn)。(reverse lines characterwise)
語法:rev [option] [file...]
例:
rev filename | tac
5、head - 查看開頭
head 從數(shù)據(jù)的開頭選擇數(shù)據(jù)行。(output the first part of files)
語法:head [OPTION]... [FILE]...
常用選項(xiàng):
-
-n
,(lines)希望選取的數(shù)據(jù)行的數(shù)量,默認(rèn)是開頭10行。
例:
[nosee@instance-4 ~]$ cal -y | head
2022
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
30 31
6、tail - 查看末尾
tail 從數(shù)據(jù)的末尾選擇數(shù)據(jù)行。(output the last part of files)
語法:tail [OPTION]... [FILE]...
常用選項(xiàng):
-
-n num
,(lines)希望選取的數(shù)據(jù)行的數(shù)量,默認(rèn)是末尾10行。 -
-n +num
,從num行開始,顯示至文件末尾 -
-f
,(follow 跟隨)監(jiān)聽一個(gè)文件末尾的變化。(如,實(shí)時(shí)監(jiān)控日志文件。ail 也可以同時(shí)監(jiān)控多個(gè)文件)
例:
cat file1 file2 file3 | sort | tail -n 20
例:實(shí)時(shí)監(jiān)控日志文件
# 窗口1
tail -f day1
# 窗口2 (模擬日記文件添加日志)
cat >> day1
四、比較不同:cmp、comm、diff、sdiff
1、cmp - 比較兩個(gè)文件(二進(jìn)制或者文本)
cmp 的使用情況只有一種情形:查看兩個(gè)文件是否相同。( compare two files byte by byte)
語法:cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]
cmp 程序逐字節(jié)地比較兩個(gè)文件,查看兩個(gè)文件是否相同。如果兩個(gè)文件中對應(yīng)的字節(jié)完全相同,那么這兩個(gè)文件就是相同的,在這種情況下,cmp 程序不做任何處理(沒有消息就是好消息)。如果兩個(gè)文件不相同,那么 cmp 程序就顯示一個(gè)合適的消息。
例:
[nosee@instance-4 ~]$ cmp test1 test2
test1 test2 differ: byte 1, line 1
2、comm - 比較兩個(gè)文件(有序文本)
comm 程序一行一行地比較兩個(gè)有序的文本文件。當(dāng)有兩個(gè)相似的文本,并且希望查看它們之間的區(qū)別時(shí),可以使用 comm 程序。(compare two sorted files line by line)
語法:comm [OPTION]... FILE1 FILE2
comm 程序以3列顯示輸出:第1列包含只在第一個(gè)文件中有的行;第2列包含只在第二個(gè)文件中有的行;第三列包含兩個(gè)文件中都有的行。
例:
[nosee@instance-4 ~]$ cat > file1
1.aaaaa
2.ddddd
3.ggggg
4.nnnnn
^C
[nosee@instance-4 ~]$ cat > file2
1.aaaaa
2.bbbbb
3.ggggg
^C
[nosee@instance-4 ~]$ comm file1 file2
1.aaaaa
2.bbbbb
2.ddddd
3.ggggg
4.nnnnn
常用選項(xiàng):
-
-1
,不輸出第1列內(nèi)容 -
-2
,不輸出第2列內(nèi)容 -
-3
,不輸出第3列內(nèi)容
如,不想輸出相同的內(nèi)容:
[nosee@instance-4 ~]$ comm -3 file1 file2
2.bbbbb
2.ddddd
4.nnnnn
3、diff - 比較兩個(gè)文件(文本)
當(dāng)需要(1)比較兩個(gè)無序文件,(2)比較大的文件時(shí),可以使用 diff (compare files line by line)。diff 可以用來查找任何類型的文件帶來的區(qū)別,例如編程語言等。可以聯(lián)想到 Git(版本控制系統(tǒng))。
1)語法:diff [OPTION]... FILES
如上面的例子使用 diff 比較:
[nosee@instance-4 ~]$ diff file1 file2
2c2
< 2.ddddd
---
> 2.bbbbb
4d3
< 4.nnnnn
diff 的目的就是顯示將第一個(gè)文件修改為第二個(gè)文件所需遵循的指示。這些指示的語法相當(dāng)簡潔,但并不簡單。
指示的說明:c(change,改變)、d(delete,刪除)、a(append,追加)。每個(gè)c、d、a字符的左右兩邊都有一串行號,左邊的數(shù)字指第一個(gè)文件中的行,右邊的數(shù)字指第二個(gè)文件中的行。< 標(biāo)記第一個(gè)文件中的行,< 標(biāo)記第二個(gè)文件中的行。(---)是為了可讀性將兩個(gè)不同的行隔開。
如,上面例子表示,將第一個(gè)文件轉(zhuǎn)換成第二個(gè)文件需要:2c2
表示將第一個(gè)文件的第二行修改成第二個(gè)文件的第二行,4d3
表示將第一個(gè)文件的第4行刪除。
2)常用選項(xiàng)
diff 程序相當(dāng)復(fù)雜,它有大量的選項(xiàng)和許多種生成輸出的方式。一些常用的選項(xiàng)如下:
-
-i
,(case insensitive)不區(qū)分大小寫。 -
-w
,(whitespace)忽略所有空白符。 -
-b
,忽略空白符(只忽略數(shù)量上的區(qū)別)。 -
-B
,(blank lines)忽略所有空白行。 -
-q
,(quiet)當(dāng)兩個(gè)文件不同時(shí),省略所有的細(xì)節(jié),只給出文件不同的提示即可。 -
-s
,(same)當(dāng)兩個(gè)文件相同時(shí),也給出提示信息。 -
-c
,(context,上下文關(guān)系)以不太簡潔,但更容易理解的格式顯示兩個(gè)文件之間的區(qū)別。 -
-u
,(unified output,統(tǒng)一輸出)生成類似于 -c 選項(xiàng)生成的輸出,但是沒有重復(fù)行。 -
-y
,(side-by-side)并排顯示
3)-c 選項(xiàng)
使用 -c 選項(xiàng)后,diff 將不再顯示指示和行號,而是顯示存在不同的實(shí)際行,同時(shí)還顯示不同行的上面和下面各兩行內(nèi)容。
[nosee@instance-4 ~]$ diff -c file1 file2
*** file1 2022-01-12 20:52:27.120528503 +0000
--- file2 2022-01-12 20:52:43.161814285 +0000
***************
*** 1,4 ****
1.aaaaa
! 2.ddddd
3.ggggg
- 4.nnnnn
--- 1,3 ----
1.aaaaa
! 2.bbbbb
3.ggggg
最頂端的兩行展示兩個(gè)文件的信息。同時(shí)說明第一個(gè)文件由*
(星號)字符標(biāo)志,第二個(gè)文件由-
字符標(biāo)志。這兩行之后,則示范了為使兩個(gè)文件相同需要進(jìn)行些什么改變。
相比默認(rèn)的輸出方式,-c 選項(xiàng)所生成的輸出要比默認(rèn)格式生成的輸出冗長很多。
4)-u 選項(xiàng)
生成類似于 -c 選項(xiàng)生成的輸出,但是沒有重復(fù)行。
[nosee@instance-4 ~]$ diff -u file1 file2
--- file1 2022-01-12 20:52:27.120528503 +0000
+++ file2 2022-01-12 20:52:43.161814285 +0000
@@ -1,4 +1,3 @@
1.aaaaa
-2.ddddd
+2.bbbbb
3.ggggg
-4.nnnnn
5)-y 選項(xiàng)
生成并排的格式,在這種各式中,第一個(gè)文件中的每一行都與第二個(gè)文件中的對應(yīng)行并排著顯示。
[nosee@instance-4 ~]$ diff -y file1 file2
1.aaaaa 1.aaaaa
2.ddddd | 2.bbbbb
3.ggggg 3.ggggg
4.nnnnn <
這種類型輸出的優(yōu)點(diǎn)是非常容易看出區(qū)別,缺點(diǎn)則是對于長文件來說可能生成太多輸出。
該輸出模式可以使用sdiff
命令來代替diff -y
。
4、sdiff - 比較兩個(gè)文件(并排比較)
當(dāng)需要進(jìn)行并排比較時(shí),許多人愿意使用sdiff,因?yàn)樗性S多專用的選項(xiàng),可以提供大量的控制。(side-by-side merge of file differences)
語法:sdiff [OPTION]... FILE1 FILE2
[nosee@instance-4 ~]$ sdiff file1 file2
1.aaaaa 1.aaaaa
2.ddddd | 2.bbbbb
3.ggggg 3.ggggg
4.nnnnn <
常用選項(xiàng):
-
-l
,當(dāng)兩個(gè)文件擁有共同行時(shí),該選項(xiàng)只顯示左邊的列。 -
-s
,不顯示在兩個(gè)文件中相同的任何行。 -
-w num
,改變列的寬度。 -
-i
、-W
、-b
、-B
選項(xiàng)則與 diff 的相同意思。(注意 sdiff 使用-W
,而 diff 使用-w
)
[nosee@instance-4 ~]$ sdiff -s -w 30 file1 file2
2.ddddd | 2.bbbbb
4.nnnnn <
五、抽取:cut、colrm、paste
1、cut - 抽取指定列
cut 程序是一個(gè)從數(shù)據(jù)中抽取指定列(或指定字段)并將其它內(nèi)容拋棄的過濾器(remove sections from each line of files)。這與 colrm 相反,colrm 從數(shù)據(jù)中刪除指定列并保存其它內(nèi)容。
語法:cut OPTION... [FILE]...
1)當(dāng)抽取數(shù)據(jù)列時(shí)
語法:cut -c list [FILE]...
或 -c 后面的空格可以省略。
使用列表告訴 cut 希望抽取哪些列時(shí),可以指定一個(gè)或多個(gè)列號(用逗號隔開),或者用-
來指定列的范圍。
例:
[nosee@instance-4 ~]$ cat day
2021
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 1 2 3 4 5 6 1 2 3 4 5 6
3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13
10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20
17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27
24 25 26 27 28 29 30 28 28 29 30 31
[nosee@instance-4 ~]$ cut -c 23-42 day
2021
February
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28
管道應(yīng)用例子:
[nosee@instance-4 ~]$ who
root pts/0 2022-01-12 23:20 (120.240.48.86)
nosee pts/1 2022-01-12 23:20 (120.240.48.86)
nosee pts/3 2022-01-12 14:32 (34.96.173.249)
[nosee@instance-4 ~]$ who | cut -c1-8 | sort
nosee
nosee
root
[nosee@instance-4 ~]$ who | cut -c1-8 | sort | uniq -c
2 nosee
1 root
2)當(dāng)抽取數(shù)據(jù)字段時(shí)
當(dāng)文本信息不是按列對齊的時(shí)候,但如果它是以一個(gè)機(jī)器可讀格式存在,也是可以使用 cut 來抽取的。
當(dāng)使用程序處理數(shù)據(jù)時(shí),我們經(jīng)常會遇到機(jī)器可能的文件,如unix的口令文件/etc/passws
,如數(shù)據(jù)庫CSV
文件。對于這種數(shù)據(jù)來說,每行都稱為一個(gè)記錄(record),每行的各個(gè)部分稱為字段(field),而充當(dāng)字段分隔符的字符稱為定界符(delimiter)。
語法:cut -f list [-d delimiter] [-s] [FILE]...
,或 -f 與 -d 后面的空格可省略。
例:
[nosee@instance-4 ~]$ cut -f 1,3-5 -d ':' /etc/passwd
root:0:0:root
daemon:1:1:daemon
bin:2:2:bin
sys:3:3:sys
sync:4:65534:sync
games:5:60:games
man:6:12:man
lp:7:7:lp
mail:8:8:mail
2、colrm - 移除列
colrm("column remove",移除列)程序從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),刪除指定的數(shù)據(jù)列,然后將剩余數(shù)據(jù)寫入到標(biāo)準(zhǔn)輸出。(remove columns from a file)
語法:colrm [start [stop]]
其中start和stop指定要移除區(qū)域的開頭和末尾,列的編號從1開始。
例:
colrm 14 15 < filename | less
colrm 14 15 < file1 > file2
3、paste - 組合數(shù)據(jù)列
paste 程序組合數(shù)據(jù)列。 (merge lines of files)
paste 程序可以將幾個(gè)文件(其中每個(gè)文件都包含一列數(shù)據(jù))組成一個(gè)大表;也可以將連續(xù)的數(shù)據(jù)行組合起來,構(gòu)建多個(gè)列。
語法:paste [OPTION]... [FILE]...
例:
paste fime1 file2 file3 > info.txt
六、統(tǒng)計(jì)和格式化:nl、wc、expand、unexpand、old、fmt、pr
1、nl - 插入行號
在文本中插入行號。(number lines of files)
語法:nl [OPTION]... [FILE]...
常用選項(xiàng):
-
-v num
,起始號 -
-i num
,增量 -
-b a
,(body numbering)正文編號。后面跟字母a
(all lines),對所有行編號。(默認(rèn)情況下 nl 不對空行編號) -
-n
,(number format)數(shù)字格式。后面可跟:ln
(左對齊,沒有前導(dǎo)0)、rn
(右對齊,沒有前導(dǎo)0)、rz
(右對齊,有前導(dǎo)0)
例:
[nosee@instance-4 ~]$ nl -b a -n rz aaa.txt | head
000001 NL(1) User Commands NL(1)
000002
000003 NAME
000004 nl - number lines of files
000005
000006 SYNOPSIS
000007 nl [OPTION]... [FILE]...
000008
000009 DESCRIPTION
000010 Write each FILE to standard output, with line numbers added.
2、wc - 單詞統(tǒng)計(jì)
wc 程序統(tǒng)計(jì)行、單詞和字符的數(shù)量。(print newline, word, and byte counts for each file)
語法:wc [OPTION]... [FILE]...
或 wc [OPTION]... --files0-from=F
默認(rèn)情況下,wc 的輸出包含3個(gè)數(shù)字:數(shù)據(jù)中的行數(shù)、單詞數(shù)和字符數(shù)。
- “行”就是以新行字符結(jié)尾的一串字符
- “單詞”就是一串連續(xù)的字符,用空格、制表符或新行字符分隔
- “字符”就是字母、數(shù)字、標(biāo)點(diǎn)符號、空格、制表符或者新行字符
常用選項(xiàng):
-
-l
,統(tǒng)計(jì)行 -
-w
,統(tǒng)計(jì)單詞 -
-c
,統(tǒng)計(jì)字符 -
-L
,顯示最長行的長度
例:
[nosee@instance-4 ~]$ wc aaa.txt day.txt
94 315 2901 aaa.txt
8 114 502 day.txt
102 429 3403 total
例:統(tǒng)計(jì)目錄下的文件數(shù)
[nosee@instance-4 ~]$ ls -al /etc | wc -l
150
3、expand - 將制表符轉(zhuǎn)換成空格
expand 程序?qū)⑤斎胛募械乃兄票矸淖兂煽崭瘢⑼S持與原始文本相同的對齊方式。(convert tabs to spaces.)
語法:expand [OPTION]... [FILE]...
默認(rèn)情況下,expand 使用 Unix 慣例,即將制表位設(shè)置為每8個(gè)位置一個(gè)。因此,輸入中的每個(gè)制表符都將被輸出中的1至8個(gè)空格替換。
unexpand
-
-t num
,設(shè)置制表位。默認(rèn)num為8,即每隔8個(gè)字符為一個(gè)制表位。 -
-i
,(initial)只轉(zhuǎn)換每行開頭的制表符
例:
expand -t 4 filename
4、unexpand - 將空格轉(zhuǎn)換成制表符
將空格轉(zhuǎn)換成制表符,同時(shí)保持原始文件中的對齊方式。(convert spaces to tabs.)
語法:unexpand [OPTION]... [FILE]...
與 expand 一個(gè)重要的區(qū)別就是,默認(rèn)情況下 unexpand 程序只替換行開頭的空格。
常用選項(xiàng):
-
-a
,(all)替換所有空格
5、fold - 格式化行
fold 將長行分隔成短行。(wrap each input line to fit in specified width)
語法:fold [OPTION]... [FILE]...
常用選項(xiàng):
-
-w width
,設(shè)置行的最大寬度,默認(rèn)是80。 -
-s
,不分隔單詞
例:
man fold | fold -s -w 40 | less
6、fmt - 格式化段落
fmt 程序?qū)⒍温渲械母餍羞B接起來,從而使段落盡可能短小和緊湊,而且還不改變內(nèi)容和空白符。換句話說,就是 fmt 使用文本看上去更漂亮。(simple optimal text formatter)
語法:fmt [-WIDTH] [OPTION]... [FILE]...
常用選項(xiàng):
-
-w num
,設(shè)置行的寬度。(default of 75 columns) -
-u
,(uniform spacing)減少空格,使單詞之間最多只有一個(gè)空格,句子末尾最多只有兩個(gè)空格。 -
-s
,(split only)僅拆分。告訴 fmt 拆分長行,但是不連接短行。
當(dāng) fmt 讀取文本時(shí),它假定段落由空行分隔。因此,一個(gè)段落就是一個(gè)或多個(gè)連續(xù)的文本行,不包括空行。
fmt 程序根據(jù)下述規(guī)則每次讀取并格式化一個(gè)段落:
- 行寬:使每行盡可能的長,但是不能超過指定的長度。默認(rèn)情況下,
-w
的值為 75 個(gè)字符。 - 句子:無論何時(shí),盡可能地在句子末尾分隔行。
- 空白符:保持單詞與空行之間的所有縮進(jìn)、空格。可使用
-u
選項(xiàng)修改。 - 制表符:在讀取文件時(shí)將所有的制表符轉(zhuǎn)換成空格,并且在最后的輸出中的合適位置上插入新的制表符。
例:
[nosee@instance-4 ~]$ man fmt | fmt -u -w 50 | head -n 16
FMT(1) User Commands FMT(1)
NAME
fmt - simple optimal text formatter
SYNOPSIS
fmt [-WIDTH] [OPTION]... [FILE]...
DESCRIPTION
Reformat each paragraph in the FILE(s),
writing to standard output. The option
-WIDTH is an abbreviated form of
--width=DIGITS.
With no FILE, or when FILE is -, read
standard input.
7、pr - 按頁格式化文本
pr 程序提供兩種基本服務(wù):首先, pr 將文本格式化成頁;其次,pr 確保每頁都有自己的標(biāo)題、邊緣和頁號。(convert text files for printing)
但是,pr 程序不僅僅是將文本簡單地分成頁并生成標(biāo)題、邊緣和頁號。pr 還可以將一個(gè)單獨(dú)文件中的文本按列排序;還可以將多個(gè)文件中的文本合并在一起,每個(gè)文件進(jìn)入自己的列。
語法:pr [OPTION]... [FILE]...
常用選項(xiàng):
-
-h text
,text 是標(biāo)題中間的文字 -
-l n
,n 是每頁的行數(shù) -
-o margin
,(offset)偏移,margin 是左邊緣的大小 -
-W width
,width 是輸出的寬度,默認(rèn)是72字符 -
+beg [:end]
,beg 表示開始打印的頁號,end 表示最后需要打印的頁號。如+2:5
表示只格式化并打印第2頁至第5頁。 -
-d
,使用雙倍行距文本 -
-t
,移除標(biāo)題 -
-columns
,分列打印,columns 為一個(gè)數(shù)字,如-2
表示把文本分成兩列(即把原本兩頁的內(nèi)容合并成一頁中的兩列內(nèi)容,以此類推) -
-m
,(merge)合并。將多個(gè)文件分別格式化成單獨(dú)的列。
例:
[nosee@instance-4 ~]$ man pr | fmt -uw 100 |nl -ba | pr +2 -h '---pr手冊---' | head -n 20
2022-01-13 20:46 ---pr手冊--- Page 2
57 -m, --merge
58 print all files in parallel, one in each column, truncate lines, but join lines
59 of full length with -J
60
61 -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]
62 number lines, use DIGITS (5) digits, then SEP (TAB), default counting starts with
63 1st line of input file
64
65 -N, --first-line-number=NUMBER
66 start counting with NUMBER at 1st line of first page printed (see +FIRST_PAGE)
67
68 -o, --indent=MARGIN
69 offset each line with MARGIN (zero) spaces, do not affect -w or -W, MARGIN will
70 be added to PAGE_WIDTH
71
七、查找:grep、look
1、grep - 選取包含特定模式的行
grep 程序從標(biāo)準(zhǔn)輸入或者文件中讀取數(shù)據(jù),抽取所有包含特定模式的行,并寫到標(biāo)準(zhǔn)輸出。(print lines that match patterns)
grep 中的 g 代表“global 全局”,re 代表“regular expression 正則表達(dá)式”,p 代表“print 打印”。
grep 的變體有:egrep, fgrep, rgrep。(這些變體已被棄用,提供這些變體是為了向后兼容)
In addition, the variant programs egrep, fgrep and rgrep are the same as grep -E, grep -F, and grep -r, respectively. These variants are deprecated, but are provided for backward compatibility.
語法:
grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS ... [FILE...]
grep [OPTION...] -f PATTERN_FILE ... [FILE...]
例:
[nosee@instance-4 ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
常用選項(xiàng):
-
-c
,(count)統(tǒng)計(jì)所抽取行的數(shù)量 -
-i
,(ignore)忽略大小寫 -
-n
,在選取的數(shù)據(jù)行前面加上它在原本數(shù)據(jù)中對應(yīng)的位置(行號) -
-l
,(list filename)不顯示包含該模式的各行,而是將包含這種模式的文件名稱寫出來 -
-L
,與 -l 選項(xiàng)正好相反,將不包含這種模式的文件名稱寫出來 -
-w
,指定只希望搜索完整的單詞 -
-v
,(reverse 相反)選取不包含指定模式的行 -
-x
,查找那些完全由搜索模式構(gòu)成的行 -
-r
,(recursive 遞歸)搜索整個(gè)目錄樹。(相當(dāng)于rgrep) -
-F
,搜索固定的字符串,而不是正則表達(dá)式。(相當(dāng)于fgrep) -
-E
,允許使用擴(kuò)展正則表達(dá)式。(相當(dāng)于egrep) -
--color
搜索到的內(nèi)容加上顏色顯示
例:統(tǒng)計(jì)在 /etc 目錄下,名字以 rc 開頭的文件
[nosee@instance-4 ~]$ ls /etc/ | grep '^rc'
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rcS.d
[nosee@instance-4 ~]$ ls /etc/ | grep -c '^rc'
8
例:遞歸查找目錄www下文件中包含'phpinfo'的文件,并顯示所在位置
[nosee@instance-4 ~]$ grep -rn phpinfo www
www/hi.php:5://phpinfo();
www/phpinfo.php:4:phpinfo();
2、look - 選取特定模式開頭的行(有序文本)
look 程序搜索以字母順序排列的數(shù)據(jù),并查找所有以特定模式開頭的行。(display lines beginning with a given string)
語法:look [-bdf] [-t termchar] string [file ...]
常用選項(xiàng):
-
-d
,(dictionary 字典)只考慮字母和數(shù)字,忽略標(biāo)點(diǎn)符號和其它特殊字符 -
-f
,忽略大小寫
例:
[nosee@instance-4 ~]$ look -f x look-test.txt
X11
xattr.conf
xdg
look 不能從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),它必須從一個(gè)或多個(gè)文件中獲取輸入。所以,嚴(yán)格地講,look 并不是一個(gè)過濾器。
對于標(biāo)準(zhǔn)輸入來說,程序每次只能讀取一行數(shù)據(jù)。但是,look 程序是使用一種“二分查找”的搜索方法,要求同時(shí)訪問所有的數(shù)據(jù)。基于這個(gè)原因,look 程序可以在管道線的開頭使用,但不能在管道線中間或末尾使用。
look 有兩大優(yōu)點(diǎn):易于使用并且速度非常快。
通過使用 look 程序搜索字典文件,還可以用于單詞查找。
假設(shè)你想輸入一個(gè)單詞,但是不確定它的拼寫,則可以使用 look 來做檢查。如:simultaneous
[10:46 @nosee ~]$ look simult
simultaneous
simultaneously
使用man look
說明可以查看字典文件存放在什么位置,感興趣的話也可以使用wc -l
命令去查看一下該字典文件上共收錄了多少個(gè)單詞:
[10:50 @nosee /usr/share/dict]$ cat american-english | wc -l
102401
八、排序、組合及變換:sort、uniq、join、tr、sed
1、sort - 排序數(shù)據(jù)
sort 程序用于排序數(shù)據(jù)以及查看數(shù)據(jù)是否已經(jīng)有序。(sort lines of text files)
語法:sort [OPTION]... [FILE]...
或 sort [OPTION]... --files0-from=F
sort 程序擁有極大的靈活性,它即可以比較整行,也可以從每行中選取部分(字段)進(jìn)行比較。使用 sort 的最簡單的方法就是排序一個(gè)單獨(dú)的文件、比較整行并在屏幕上顯示結(jié)果。(默認(rèn)情況下是 ASCII 表的順序進(jìn)行排序)
常用選項(xiàng):
-
-o
filename,(output 輸出)將排序好的數(shù)據(jù)存放到 filename 文件中。 -
-d
,(dictionary 字典)只查看字母、數(shù)字和空白符(空格和制表符),忽略其它字符對排序的影響(如標(biāo)點(diǎn)符號) -
-f
,(fold,等同)同等對待大寫字母和小寫字母,即忽略大小寫。 -
-n
,(numeric,數(shù)字)識別行開頭或者字段開頭的數(shù)字,并按照數(shù)字進(jìn)行排序。 -
-r
,(reverse,反向)按反向順序?qū)?shù)據(jù)排序。 -
-u
,(unique,唯一)相同的行只留下一行 -
-c
,(check,檢查)檢查數(shù)據(jù)是否已經(jīng)有序 -
-cu
,表示檢查數(shù)據(jù)是否已經(jīng)有序,并且所有行都是唯一
例:
[nosee@instance-4 ~]$ sort -f sorttest.txt
batch-size=NMERGE
Characters in a field are counted from the beginning of the preceding
compress-program=PROG
debug
files0-from=F
in the field; both are origin 1, and the stop position defaults to the
line's end. If neither -t nor -b is in effect,
r, --reverse
random-source=FILE
s, --stable
2、uniq - 查找重復(fù)行(有序文本)
uniq 程序用于查找有序數(shù)據(jù)中的重復(fù)行。(report or omit repeated lines)
語法:uniq [OPTION]... [INPUT [OUTPUT]]
uniq 程序可以執(zhí)行4項(xiàng)不同的任務(wù):消除重復(fù)行、選取重復(fù)行、選取唯一行、統(tǒng)計(jì)重復(fù)行的數(shù)量
常用選項(xiàng):
-
-d
,只查看重復(fù)行 -
-u
,只查看非重復(fù)行 -
-c
,統(tǒng)計(jì)每行重復(fù)的次數(shù)
例:刪除重復(fù)行
[nosee@instance-4 ~]$ cat uuu.txt
aaaaaa
dddddd
dddddd
ccc
fffff
fffff
gggg
hhhhh
[nosee@instance-4 ~]$ uniq uuu.txt
aaaaaa
dddddd
ccc
fffff
gggg
hhhhh
[nosee@instance-4 ~]$ uniq -c uuu.txt
1 aaaaaa
2 dddddd
1 ccc
2 fffff
1 gggg
1 hhhhh
3、join - 合并兩個(gè)文件中的數(shù)據(jù)(有序文本)
join 程序基于特定字段的值將兩個(gè)有序文件組合在一起。(join lines of two files on a common field)
語法:join [OPTION]... FILE1 FILE2
常用選項(xiàng):
-
-a1
,顯示第一個(gè)文件的所有行 -
-a2
,顯示第二個(gè)文件的所有行 -
-v1
,查看第一個(gè)文件中沒有匹配的行 -
-v2
,查看第二個(gè)文件中沒有匹配的行 -
-i
,(ignore)忽略大小寫 -
-1 num
,設(shè)置第一個(gè)文件的連接字段,默認(rèn)為1 -
-2 num
,設(shè)置第二個(gè)文件的連接字段,默認(rèn)為1
注意:
- 選項(xiàng)
-a
與選項(xiàng)-v
不可以同時(shí)使用(如-a1 -v2
);但是-a1 -a2
這樣是可以的,稱之為外聯(lián)接,反之在默認(rèn)情況 join 程序?yàn)閮?nèi)聯(lián)接。 - 默認(rèn)情況下,jion 假定各個(gè)字段之間用空白符分隔(空格或制表符)
- 設(shè)置連接字段,如
-1 3 -2 4
表示用第一個(gè)文件的第三個(gè)字段和第二個(gè)文件的第四個(gè)字段進(jìn)行連接。
例:
[nosee@instance-4 ~]$ cat aaa.txt
111 gdfgseer
222 srgerge
333 serhger
444 jjjjj
[nosee@instance-4 ~]$ cat bbb.txt
111 地胉
222 我人
333 哈哈
555 嘿嘿
[nosee@instance-4 ~]$ join aaa.txt bbb.txt
111 gdfgseer 地胉
222 srgerge 我人
333 serhger 哈哈
[nosee@instance-4 ~]$ join -a1 aaa.txt bbb.txt
111 gdfgseer 地胉
222 srgerge 我人
333 serhger 哈哈
444 jjjjj
[nosee@instance-4 ~]$ join -v2 aaa.txt bbb.txt
555 嘿嘿
4、tr - 改變或者刪除指定的字符
tr(translate 轉(zhuǎn)換)程序可以對字符執(zhí)行3種不同的運(yùn)算。(translate or delete characters)
1)可以將字符改變成其它字符。
2)可以指定如果要轉(zhuǎn)換的字符連續(xù)出現(xiàn)不止一次,則用一個(gè)單獨(dú)的字符替換。
3)可以刪除指定的字符
語法:tr [OPTION]... SET1 [SET2]
常用選項(xiàng):
-s
,將SET1
中的多個(gè)連續(xù)字符替換為一個(gè)單獨(dú)的字符
-d
,刪除指定的字符,使用該選項(xiàng)時(shí),參數(shù)SET2
則不需要
-c
,匹配所有不在SET1
中的字符
常用參數(shù)
-
SET1
,需要查找的字符組 -
SET2
,用作替換的字符組
SET1
與SET2
常用組合:
-
[:lower:]
,小寫字母,相當(dāng)于a-z
-
[:upper:]
,大寫字母,相當(dāng)于A-Z
-
[:digit:]
,數(shù)字,相當(dāng)于0-9
例:
[nosee@instance-4 ~]$ cat ddd.txt
root:x:0,0
sshd:x:105,65534
sync:x:4,65534
sys:x:3,3
uucp:x:10,10
www-data:x:33,33
[nosee@instance-4 ~]$ tr s S < ddd.txt
root:x:0,0
SShd:x:105,65534
Sync:x:4,65534
SyS:x:3,3
uucp:x:10,10
www-data:x:33,33
[nosee@instance-4 ~]$ cat ddd.txt | tr ':,' \~
root~x~0~0
sshd~x~105~65534
sync~x~4~65534
sys~x~3~3
uucp~x~10~10
www-data~x~33~33
[nosee@instance-4 ~]$ cat ddd.txt | tr -s '0-9' '?'
root:x:?,?
sshd:x:?,?
sync:x:?,?
sys:x:?,?
uucp:x:?,?
www-data:x:?,?
當(dāng)使用特殊字符時(shí),記得要使用\
來引用。
例:將小寫字母替換為大寫字母
[nosee@instance-4 ~]$ cat ddd.txt | tr a-z A-Z
ROOT:X:0,0
SSHD:X:105,65534
SYNC:X:4,65534
SYS:X:3,3
UUCP:X:10,10
WWW-DATA:X:33,33
[nosee@instance-4 ~]$ cat ddd.txt | tr [:lower:] [:upper:]
ROOT:X:0,0
SSHD:X:105,65534
SYNC:X:4,65534
SYS:X:3,3
UUCP:X:10,10
WWW-DATA:X:33,33
轉(zhuǎn)換不可見字符:
代碼 | 控制鍵 | 八進(jìn)制碼 | 名稱 |
---|---|---|---|
\b | ^H | \010 | 退格 |
\t | ^I | \011 | 制表符 |
\n | ^J | \012 | 新行/換行 |
\r | ^M | \015 | 回車 |
\ | 反斜線 |
當(dāng) tr 程序需要使用以上字符時(shí),需要使用以上的代碼或八進(jìn)制碼。如:
[nosee@instance-4 ~]$ cat ddd.txt | tr ':,' '\t'
root x 0 0
sshd x 105 65534
sync x 4 65534
sys x 3 3
uucp x 10 10
www-data x 33 33
例:將多個(gè)空格替換為一個(gè)空格(擠壓空格)
tr -s ' ' ' ' < filename
5、sed - 非交互文本編輯
文本編輯器就是一個(gè)允許對文本執(zhí)行操作的程序,一般情況下,可以進(jìn)行插入、刪除、改變、搜索等操作。比較流行的 vim 與 emacs 這類是屬于交互式文本編輯器,而 sed 則屬于非交互式文本編輯器。
sed(stream editor 流編輯器)需要提前設(shè)計(jì)命令,然后將命令發(fā)送給程序,程序再自動地執(zhí)行命令。(stream editor for filtering and transforming text)
sed 可以從文件中讀取數(shù)據(jù),也可以從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)。
語法:sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用選項(xiàng):
-
-i
,(in-place 原地)將輸出保存到一個(gè)臨時(shí)文件,一但所有數(shù)據(jù)都成功處理完,就將臨時(shí)文件復(fù)制到原始文件。
使用-i
選項(xiàng)時(shí)應(yīng)特別小心,因?yàn)樗鼤淖冊募R话阆冗\(yùn)行一個(gè)沒有-i
選項(xiàng)的命令查看,檢查沒問題后再加上-i
更為穩(wěn)妥。 -
-e
,執(zhí)行多條命令 -
-E
或-r
,允許使用擴(kuò)展正則表達(dá)式
【{script-only-if-no-other-script}
】的語法:
-
s/search/replacement/[g]
,這是最常用的搜索替換模式,search
為正則表達(dá)式,replacement
是替換文本。默認(rèn)情況只改變每行第一個(gè)匹配到的字符串,加上g
則表示全文搜索替換 -
s/search//[g]
,該模式中,原本replacement
的內(nèi)容沒有了。意思就是,刪除所匹配到的內(nèi)容。 -
[/address|pattern/]s/search/replacement/[g]
,在指定的區(qū)域搜索,address
表示一個(gè)或者多個(gè)行的地址,pattern
是一個(gè)字符串。
如:5s/search/replacement/[g]
表示只對第5行執(zhí)行搜索替換,5,$s/search/replacement/[g]
表示第5到最后一行。
/ok/s/search/replacement/[g]
表示包含ok的行,/[0-9][0-9]/s/search/replacement/[g]
表示包含有兩個(gè)連續(xù)數(shù)字的行。
例:
[nosee@instance-4 ~]$ cat ddd.txt
root:x:0,0
sshd:x:105,65534
sync:x:4,65534
sys:x:3,3
uucp:x:10,10
www-data:x:33,33
[nosee@instance-4 ~]$ sed 's/r[a-zA-Z]*t/***/g' ddd.txt
***:x:0,0
sshd:x:105,65534
sync:x:4,65534
sys:x:3,3
uucp:x:10,10
www-data:x:33,33
例:執(zhí)行多條命令
[nosee@instance-4 ~]$ cal
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
[nosee@instance-4 ~]$ cal | sed \
> -e 's/Su/一/g' \
> -e 's/Mo/二/g'
January 2022
一 二 Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
例:使用擴(kuò)展正則表達(dá)式,修改日期函數(shù)顯示日期時(shí)的間隔
[nosee@instance-4 ~]$ cal
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
[nosee@instance-4 ~]$ cal | sed -E \
> -e 's/[ ]{7,}/\t\t\t\t\t\t/g' \
> -e 's/[ ]{4,}/\t\t/g' \
> -e 's/[ ]*$/-/g' \
> -e 's/[ ]{2}/ 0/g' \
> -e 's/^[ ]{1}/0/g' \
> -e '2,$s/[ ]{1}/\t/g' \
> -e 's/1-/ 1/g' \
> -e '1s/[ ]{1}/ /g' \
> -e 's/\<[0]/ /g' \
> -e 's/-//g'
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
九、分頁程序:less、more
雖然 less、more 不是過濾器,但是經(jīng)常在管道命令的最后會使用它們來顯示文本,特別是 less ,所以也需要好好了解一下。
1、less
less 程序工作在原始模式中,因此它能夠完全接管命令行和屏幕,根據(jù)自己的需要顯示行及處理字符。
基本指令 | 說明 |
---|---|
h 、H
|
顯示幫助信息 |
q 、:q 、Q 、:Q 、ZZ
|
退出 |
g |
跳到第一行 |
G |
跳到最后一行 |
= |
顯示當(dāng)前行號和文件名 |
<Space> 、<PgDn> 、f 、^F 、^V
|
前進(jìn)一屏 |
<PgUp> 、b 、^B 、ESC-v
|
后退一屏 |
d 、^D
|
前進(jìn)半屏 |
u 、^U
|
后退半屏 |
<Return> 、↓ 、e 、^E 、j 、^N
|
前進(jìn)一行 |
n<Return> 、n↓
|
前進(jìn) n 行 |
y 、↑ 、^Y 、k 、^K 、^P
|
后退一行 |
ny 、n↑
|
后退 n 行 |
ng |
跳到第 n 行 |
np |
跳到文本的 n% 處 |
/pattern |
向前搜索指定模式(可以是簡單字符串或正則表達(dá)式) 高亮顯示出所有匹配的結(jié)果,下同 |
?pattern |
向后搜索指定模式(可以是簡單字符串或正則表達(dá)式) |
n |
重復(fù)搜索:相同方向 |
N |
重復(fù)搜索:相反方向 |
!command |
執(zhí)行指定的 shell 命令 |
v |
使用當(dāng)前文件啟動 vi 編輯器 |
-option |
改變指定的選項(xiàng) option(如:-i 忽略大小寫,-m 顯示百分比) |
_option |
顯示指定的選項(xiàng) option |
只需要記住一些自己常用的指令就行。
處理多文件指令 | 說明 |
---|---|
:n |
切換到列表中的下一個(gè)文件 |
:p |
切換到列表中的前一個(gè)文件 |
:x |
切換到列表中的第一個(gè)文件 |
e |
在列表中插入一個(gè)新文件 |
:d |
從列表中刪除(移出)當(dāng)前文件 |
:f |
顯示當(dāng)前文件的名稱,同“= ” |
/*pattern |
向前搜索指定模式 (將整個(gè)文件的列表視為一個(gè)大文件) |
?*pattern |
向后搜索指定模式 (將整個(gè)文件的列表視為一個(gè)大文件) |
同時(shí) less 還有大量的選項(xiàng)可供使用。
常用選項(xiàng):
-
-s
,(squeeze,擠壓)將多個(gè)空白行替換為一個(gè)空白行 -
-m
,顯示百分比 -
-M
,顯示更多信息:文件名、行號、百分比 -
-e
or-E
,當(dāng)文件顯示結(jié)束后,自動退出 -
-N
,顯示行號 -
-i
,在搜索模式中忽略大小寫
+
(加號)選項(xiàng)允許指定 less 程序從什么地方開始顯示數(shù)據(jù)。(也就是基本指令表大部分顯示指定數(shù)據(jù)的命令都可以用)
例:瀏覽文件 fillename.txt,顯示當(dāng)前位置的百分比,并從匹配到'name'字符串的位置開始查看。
less -m +/name fillename.txt
例:從50%的位置開始查看數(shù)據(jù)
less +50p fillename.txt
2、more
向前分頁瀏覽文件內(nèi)容。more 可以認(rèn)為是一個(gè)簡化版的 less ,所以也不過多介紹了。
基本指令 | 說明 |
---|---|
h |
顯示幫助信息 |
q 、Q
|
退出 |
= |
顯示當(dāng)前行號 |
<Space> 、f
|
前進(jìn)一屏 |
b 、^B
|
后退一屏 (在管道命令中該指令無效) |
d 、^D
|
前進(jìn)半屏 |
<Return> |
前進(jìn)一行 |
/pattern |
向前搜索指定模式 |
/ |
重復(fù)上一次搜索 |
!command |
執(zhí)行指定的 shell 命令 |
v |
使用當(dāng)前文件啟動 vi 編輯器 |
十、參考
書箱:《Unix & Linux 大學(xué)教程》第16-19章 (美)Harley Hahn 著 張杰良 譯