一溪椎、tr 命令
tr (translate) 命令可以對(duì)來(lái)自標(biāo)準(zhǔn)輸入的字符進(jìn)行替換、壓縮和刪除操作罩抗。
語(yǔ)法
tr [option] string1 string2
選項(xiàng)
tr string1 string2
:將標(biāo)準(zhǔn)輸入中所有屬于 string1 的字符替換為 string2 中的字符
-d
:刪除標(biāo)準(zhǔn)輸入中所有屬于 string1 的字符
-s
:把標(biāo)準(zhǔn)輸入中連續(xù)的重復(fù)字符壓縮成一個(gè)字符顯示
-c
:取代或刪除標(biāo)準(zhǔn)輸入中所有不屬于 string1 的字符
示例
# 替換指定字符
$ echo "hello world" | tr 'h' 'H'
Hello world
# 刪除指定字符(數(shù)字和空格)
$ echo "hello 12345 world" | tr -d '0-9 '
helloworld
# 壓縮指定字符
$ echo "heeeeeeeeello world" | tr -s 'e'
hello world
# 字符集補(bǔ)集
$ echo "hello 12345 world" | tr -c -d '0-9'
12345
字符集格式(string1 / string2)
字符集合(即命令參數(shù)中的 string1 和 string2)用于指定需要替換或刪除的字符炮姨。'A-Za-z'
、'A-F0-9'
栖袋、'}.\t'
等都是合法的字符集合。
字符 | 含義 |
---|---|
\b | 退格符 |
\n | 新行 |
\r | 回車符 |
\t | Tab 符 |
CHAR1-CHAR2 | 從 CHAR1 到 CHAR2 的所有字符(按 ASCII 字符順序) |
[:alnum:] | 所有字母和數(shù)字 |
[:alpha:] | 所有字母 |
[:blank:] | 所有空格和 Tab 字符 |
[:cntrl:] | 所有控制字符 |
[:graph:] | 所有可打印字符抚太,不包括空格 |
[:lower:] | 所有小寫字符 |
[:punct:] | 所有標(biāo)點(diǎn)符號(hào) |
[:space:] | 所有橫向或縱向的空白字符 |
[:upper:] | 所有大寫字符 |
二塘幅、cut 命令
cut
命令用于切割并篩選文本行中的指定部分,其操作對(duì)象可以是一個(gè)或多個(gè)文件尿贫,如未指定文件選項(xiàng)或該選項(xiàng)為 "-"电媳,則從標(biāo)準(zhǔn)輸入中讀取需要操作的內(nèi)容。
語(yǔ)法
cut <option> list [file ...]
其中 list 選項(xiàng)為由逗號(hào)分隔的數(shù)字或 "-" 號(hào)連接的數(shù)字范圍庆亡,用于指定文本行中需要顯示的字段匾乓。
- N-:從第 N 個(gè)字節(jié)、字符又谋、字段到結(jié)尾
- N-M:從第 N 個(gè)字節(jié)拼缝、字符娱局、字段到第 M 個(gè)(包括 M 在內(nèi))
- -M:從第 1 個(gè)字節(jié)、字符咧七、字段到第 M 個(gè)(包括 M 在內(nèi))
選項(xiàng)
-b list
:list 選項(xiàng)指定的是 byte 的范圍
-c list
:list 選項(xiàng)指定的是字符的范圍
-d
:指定字段的分隔符衰齐,默認(rèn)是 Tab
-f list
:list 選項(xiàng)指定的是字段的范圍
示例
用于演示的文件內(nèi)容如下:
$ cat students.txt
No Name Mark
01 rose 69
02 jack 71
03 alex 68
使用 -f 選項(xiàng)提取指定字段
$ cut -f 2,3 students.txt
Name Mark
rose 69
jack 71
alex 68
使用 -d 選項(xiàng)指定字段分隔符
$ cat students2.txt
No,Name,Mark
01,rose,69
02,jack,71
03,alex,68
$ cut -f 2,3 -d "," students2.txt
Name,Mark
rose,69
jack,71
alex,68
使用 -c 選項(xiàng)提取指定字符范圍里的內(nèi)容
$ cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
$ cut -c -5 test.txt
abcde
abcde
abcde
$ cut -c 5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
三、sort 命令
sort
命令用于將文件內(nèi)容進(jìn)行排序继阻,并將排序結(jié)果打印到標(biāo)準(zhǔn)輸出耻涛。它將文件的每一行文本視為一個(gè)單位,從首字母向后瘟檩,依次按該字母的 ASCII 碼值進(jìn)行比較抹缕,并按升序輸出。
選項(xiàng)
-b
:忽略每行行首的空格字符
-c
:檢查文件是否已按順序排序
-d
:排序時(shí)芒帕,只考慮字母歉嗓、空格和數(shù)字,忽略其它字符
-f
:排序時(shí)背蟆,將小寫字母視為大寫字母(即忽略大小寫)
-i
:排序時(shí)鉴分,忽略所有非打印字符
-M
:將前面三個(gè)字母按月份的縮寫進(jìn)行排序
-n
:按照數(shù)值的大小進(jìn)行排序
-o
:將排序好的結(jié)果輸出到指定文件中
-r
:以相反的順序輸出排序后的結(jié)果
-t
:指定排序時(shí)使用的欄位分隔符
-u
:合并顯示內(nèi)容相同的行
示例
用于演示的文件內(nèi)容如下:
$ cat sort.txt
AAA:BB
aaa:4
ccc:10
bbb:20
bbb:8
簡(jiǎn)單排序
$ sort sort.txt
AAA:BB
aaa:4
bbb:20
bbb:8
ccc:10
按照 BB 列的數(shù)字由大到小排序
$ sort -nr -t: -k2 sort.txt
bbb:20
ccc:10
bbb:8
aaa:4
AAA:BB
# -n 表示按照數(shù)字大小排序,-r 表示反向排序
# -t: 表示冒號(hào)作為欄位分隔符带膀,-k2 表示第二欄(即 BB 列)作為排序依據(jù)
四志珍、uniq 命令
uniq
命令用于報(bào)告或過(guò)濾文件中內(nèi)容重復(fù)的行
選項(xiàng)
-c
:在每行輸出內(nèi)容的行首加上該行重復(fù)的次數(shù)
-d
:僅顯示內(nèi)容重復(fù)的行
-u
:僅顯示內(nèi)容未重復(fù)的行
-f
:不比較指定的欄位
-s
:不比較指定的字符
示例
# 源文件
$ cat uniq.txt
helloworld
helloworld
helloshell
hellotext
# 刪除重復(fù)行
$ uniq uniq.txt
helloworld
helloshell
hellotext
# 只顯示未重復(fù)的內(nèi)容
$ uniq -u uniq.txt
helloshell
hellotext
# 統(tǒng)計(jì)各行出現(xiàn)的次數(shù)
$ uniq -c uniq.txt
2 helloworld
1 helloshell
1 hellotext
# 只顯示重復(fù)行
$ uniq -d uniq.txt
helloworld