1.1 sort:文本排序
【功能的说明】
命令sort 将输入文本内容按照指定的规则进行排序,然后将排序结果输出
【语法格式】
sort [OPTION]... [FILE]...
sort [选项]... [文件]...
【使用说明】
命令sort 的参数及说明
参数选项 |
解释说明(带*的为重点) |
-b |
忽略每行开头存在的空格字符 |
-n |
依照数值的大小进行排序(*) |
-r |
倒序排列 |
-u |
去除重复行 |
-t |
指定分隔符(*) |
-k |
按指定区间排序(*) |
【使用范例】
基础范例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# sort ip.txt 10.0.0.4 10.0.0.4 10.0.0.4 10.0.0.4 10.0.0.5 10.0.0.5 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8
通过参数-n输出按数字从小到大顺序进行排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# sort -n ip.txt 10.0.0.4 10.0.0.4 10.0.0.4 10.0.0.4 10.0.0.5 10.0.0.5 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8
通过参数-r使输出按照降序排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# sort -nr ip.txt 10.0.0.8 10.0.0.7 10.0.0.6 10.0.0.5 10.0.0.5 10.0.0.5 10.0.0.4 10.0.0.4 10.0.0.4
通过参数-u去重复行
[root@web01 data]# sort -u ip.txt 10.0.0.4 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8
通过参数-t、-k指定列排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# sort test5 10.0.0.4 a 10.0.0.4 j 10.0.0.4 t 10.0.0.4 z 10.0.0.5 b 10.0.0.5 c 10.0.0.5 s 10.0.0.6 g 10.0.0.7 l 10.0.0.8 d [root@web01 data]# sort -t " " -k2 test5 10.0.0.4 a 10.0.0.5 b 10.0.0.5 c 10.0.0.8 d 10.0.0.6 g 10.0.0.4 j 10.0.0.7 l 10.0.0.5 s 10.0.0.4 t 10.0.0.4 z
以aa-cd-dd-XX中的最后一列xx进行分组,再对最后一列xx进行分组,再对每组中的“IP:2.2.3.XXX”
的最后一列XXX进行排序。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# cat mac.txt ad-cd-rc-ab 3.2.3.46 ab-cd-cc-ee 1.2.3.41 ab-cd-cc-aa 1.2.3.42 ab-cd-cc-aa 1.2.3.43 fd-fe-er-fe 2.3.4.51 aa-er-vd-cd 3.4.5.61 zz-sd-jk-ee 5.6.7.82 ee-ad-df-fc 4.5.6.7 ee-ad-df-fc 4.5.6.21 ba-er-vd-cd 3.4.5.91 zz-sd-jk-ee 5.6.7.182 ee-ad-df-fc 4.5.6.70 ee-ad-df-fc 4.5.6.210 [root@web01 data]# sort -t "." -k 1.10,1.11 -k 4,4n mac.txt ab-cd-cc-aa 1.2.3.42 ab-cd-cc-aa 1.2.3.43 ad-cd-rc-ab 3.2.3.46 aa-er-vd-cd 3.4.5.61 ba-er-vd-cd 3.4.5.91 ab-cd-cc-ee 1.2.3.41 zz-sd-jk-ee 5.6.7.82 zz-sd-jk-ee 5.6.7.182 ee-ad-df-fc 4.5.6.7 ee-ad-df-fc 4.5.6.21 ee-ad-df-fc 4.5.6.70
1.2 join:按照两个文件的相同字段合并
【功能说明】
命令join针对每一对具有相同内容的输入行,整合为一行输出到标准输出。
【语法格式】
join [OPTION]... FILE1 FILE2
join [选项]... 文件1 文件2
【选项说明】
命令join参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-a(文件号) |
输出文件中不匹配的行,文件号可选值1或者2,分别代表文件1和文件2 |
-i |
比较字段时忽略大小写 |
-l(字段) |
以第1文件的指定字段为基础进行合并 |
-2(字段) |
以第2文件的指定字段为基础进行合并 |
【使用范例】
[root@web01 data]# join test6 test7 yanhuihuang 23 old huiyanhuang 24 old huanghuiyan 25 old huihuangyan 21 old
1.3 uniq:去除重复行
【功能说明】
命令uniq可以输出或忽略文件中的重复行,在工作中,我们常用饿场景是使用sort命令对文件排序,然后使用uniq命令去重并计算。
【语法格式】
uniq [OPTION]... [INPUT ]
uniq [选项]... [文件或标准输入 ]
【选项说明】
命令uniq参数及说明
参数选项 |
解释说明(带*的为重点) |
-c |
去除重复行,并计算每行出现的次数(*) |
-d |
只显示重复的行 |
-u |
只显示唯一的行 |
【使用范例】
去重测试
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# cat ip.txt 10.0.0.4 10.0.0.4 10.0.0.4 10.0.0.5 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8 10.0.0.4 10.0.0.5 [root@web01 data]# uniq ip.txt 10.0.0.4 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8 10.0.0.4 10.0.0.5
结合sort去重
[root@web01 data]# sort ip.txt|uniq 10.0.0.4 10.0.0.5 10.0.0.6 10.0.0.7 10.0.0.8
1.4 wc:统计文件的行数、单词数或字节数
【功能说明】
命令wc用于统计文件的行数,单词数或字节数
【语法格式】
wc [OPTION]... [FILE]...
wc [选项]... [文件]...
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-c |
统计字节数 |
-l |
统计行数(*) |
-m |
统计字符数 |
-w |
统计单词数 |
-L |
打印最长的长度(*) |
【使用范例】
查看文件的字节数、字数、行数等。
[root@web01 data]# wc /etc/inittab 26 149 884 /etc/inittab [root@web01 data]# wc -c /etc/inittab 884 /etc/inittab [root@web01 data]# wc -l /etc/inittab 26 /etc/inittab [root@web01 data]# wc -m /etc/inittab 884 /etc/inittab [root@web01 data]# wc -w /etc/inittab 149 /etc/inittab [root@web01 data]# wc -L /etc/inittab 78 /etc/inittab
【生产案例】
查看登录系统的用户数。
[root@web01 data]# who root pts/0 2018-01-20 20:53 (10.16.50.4) root pts/1 2018-01-21 21:07 (10.16.50.4) [root@web01 data]# who|wc -l 2
1.5 iconv:转换文件的编码格式
【功能说明】
命令iconv用于转换文件的编码格式
【语法格式】
Iconv [options] [-f from-encoding] [-t to-encoding] [inputfile]... Iconv [选项] [原编码] [新编码] [输入文件]...
【选项说明】
命令iconv的参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-f encodingA |
从编码A转换(*) |
-t encodingB |
转换成编码B(*) |
-l |
显示系统支持的编码(*) |
-o |
将输出输入到指定文件(*) |
【使用案例】
[root@web01 data]# iconv -f gb2312 -t utf-8 GB2312.txt
1.6 dos2unix:将DOS格式文件转换成UNIX格式
【功能说明】
将DOS(Windows系统)格式文件转换成UNIX格式。
【语法格式】
dos2unix [file]
dos2unix [文件]
【使用范例】
在windows中用中文文档创建一个Shell脚本,拷贝到Linux中。
[root@web01 data]# dos2unix test.txt
1.7 diff:比较两个文件的不同
【功能说明】
命令diff可以琢行比较纯文本的内容,并输出文件的差异。
【语法格式】
diff [OPTION]... FILES FILES
diff [选项]... 文件 文件
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-y |
以并列的方式显示文件异同之处 |
-W |
在使用-y参数时,指定显示宽度 |
-c |
使用上下文的输出格式 |
-u |
使用统一格式输出 |
命令diff参数选项及说明
【使用范例】
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# diff test8 test9 1,3d0 < 1 < 2 < 3 5a3,6 > 6 > 7 > 8 > 9
并排格式输出
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# diff -y test8 test9 1 < 2 < 3 < 4 4 5 5 > 6 > 7 > 8 > 9
上下文输出格式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# diff -c test8 test9 *** test8 2018-01-22 15:37:13.493980588 +0800 --- test9 2018-01-22 15:37:32.718979772 +0800 *************** *** 1,5 **** - 1 - 2 - 3 4 5 --- 1,6 ---- 4 5 + 6 + 7 + 8 + 9
统一格式输出
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# diff -u test8 test9 --- test8 2018-01-22 15:37:13.493980588 +0800 +++ test9 2018-01-22 15:37:32.718979772 +0800 @@ -1,5 +1,6 @@ -1 -2 -3 4 5 +6 +7 +8 +9
比较两个目录
[root@web01 data]# diff dir2 dir3 Only in dir2: file5.txt
1.8 vimdiff:可视化比较工具
【功能说明】
命令vindiff调用vim打开文件,最多可打开4个文件,并会以不同颜色来区分文件的差异。
【语法格式】
vimdiff [options] file1 file2 [文件 [文件] ]
vimdiff [选项] 文件 文件 [文件 [文件] ]
【使用范例
1.9 rev:反向输出文件内容
【功能说明】
命令rev可以按照反向输出内容
【语法输出】
rev [file ...]
rev [文件 ...]
【使用范例】
[root@web01 data]# echo {1..10} 1 2 3 4 5 6 7 8 9 10 [root@web01 data]# echo {1..10}|rev 01 9 8 7 6 5 4 3 2 1
文本反转
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# cat mac.txt ad-cd-rc-ab 3.2.3.46 ab-cd-cc-ee 1.2.3.41 ab-cd-cc-aa 1.2.3.42 ab-cd-cc-aa 1.2.3.43 fd-fe-er-fe 2.3.4.51 aa-er-vd-cd 3.4.5.61 zz-sd-jk-ee 5.6.7.82 ee-ad-df-fc 4.5.6.7 ee-ad-df-fc 4.5.6.21 ba-er-vd-cd 3.4.5.91 zz-sd-jk-ee 5.6.7.182 ee-ad-df-fc 4.5.6.70 ee-ad-df-fc 4.5.6.210 [root@web01 data]# rev mac.txt 64.3.2.3 ba-cr-dc-da 14.3.2.1 ee-cc-dc-ba 24.3.2.1 aa-cc-dc-ba 34.3.2.1 aa-cc-dc-ba 15.4.3.2 ef-re-ef-df 16.5.4.3 dc-dv-re-aa 28.7.6.5 ee-kj-ds-zz 7.6.5.4 cf-fd-da-ee 12.6.5.4 cf-fd-da-ee 19.5.4.3 dc-dv-re-ab 281.7.6.5 ee-kj-ds-zz 07.6.5.4 cf-fd-da-ee
1.10 tr:替换或删除字符
【功能说明】
命令tr从标准输入中替换、缩减或删减字符,并将结果写到标准输出
【语法格式】
tr [OPTION]... SET1 [SET2]
tr [选项]... 字符1 [字符2]
【选项说明】
命令tr的参数选项及说明
参数选项 |
解释说明(带*的为重点) |
-d |
删除字符(*) |
-s |
保留连续字符的第一个字符,删除其他字符 |
-c |
使用第一个字符串(setl)的补集,取反 |
【使用范例】
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# tr 'e' 'x' <mac.txt ad-cd-rc-ab 3.2.3.46 ab-cd-cc-xx 1.2.3.41 ab-cd-cc-aa 1.2.3.42 ab-cd-cc-aa 1.2.3.43 fd-fx-xr-fx 2.3.4.51 aa-xr-vd-cd 3.4.5.61 zz-sd-jk-xx 5.6.7.82 xx-ad-df-fc 4.5.6.7 xx-ad-df-fc 4.5.6.21 ba-xr-vd-cd 3.4.5.91 zz-sd-jk-xx 5.6.7.182 xx-ad-df-fc 4.5.6.70 xx-ad-df-fc 4.5.6.210
使用tr命令“统一”字母大小写
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# tr '[a-z]' '[A-Z]' < mac.txt AD-CD-RC-AB 3.2.3.46 AB-CD-CC-EE 1.2.3.41 AB-CD-CC-AA 1.2.3.42 AB-CD-CC-AA 1.2.3.43 FD-FE-ER-FE 2.3.4.51 AA-ER-VD-CD 3.4.5.61 ZZ-SD-JK-EE 5.6.7.82 EE-AD-DF-FC 4.5.6.7 EE-AD-DF-FC 4.5.6.21 BA-ER-VD-CD 3.4.5.91 ZZ-SD-JK-EE 5.6.7.182 EE-AD-DF-FC 4.5.6.70 EE-AD-DF-FC 4.5.6.210
删除文件中出现的oby中的每个字符
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# tr -d 'you' <test0 abcdefghijklmnpqrst abcdefghijklmnpqrst abcdefghijklmnpqrst abcdefghijklmnpqrst abcdefghijklmnpqrst abcdefghijklmnpqrst anhihangilvea ilveilvei
1.11 od:按不同进制显示文件
【功能说明】
命令od用于输出文件的八进制,十六进制或者其他格式编码字节。
【语法格式】
od [OPTION]... [FILE]...
od [选项]... [文件]...
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-A地址进制 |
按指定的进制显示地址信息,地址进制包括: o八进制(系统默认值) d 十进制 x十六进制 n不打印卫衣值 |
-t显示格式 |
指定数据的显示格式,主要参数有: a命名字符,忽略高阶位 c ASCLL字符或反斜杠序列(如 ) d 有符号的十进制数 f 浮点数 o八进制 u无符号十进制 x十六进制 |
【使用范例】
查看二进制命令文件
[root@web01 data]# od /bin/ls 0000000 042577 043114 000402 000001 000000 000000 000000 000000 0000020 000002 000076 000001 000000 023740 000100 000000 000000 0000040 000100 000000 000000 000000 140440 000001 000000 000000 0000060 000000 000000 000100 000070 000010 000100 000040 000037
1.12 tee:多重定向
【功能说明】
命令tee用于将数据重定向到文件,同时提供一份重向数据的副本作为后续命令的标准输入。
【语法格式】
tee [OPTION]... [FILE]...
tee [选项]... [文件]...
【选项说明】
参数选项 |
解释说明(带*的为重点) |
-a |
向文件追加内容,而不是覆盖(*) |
【使用案例】
命令tee允许标准输出同时把内容写入(覆盖)到文件中的实践示例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 dir1]# ls|tee ls.txt
file1.txt
ls.txt
test
[root@web01 dir1]# cat ls.txt
file1.txt
ls.txt
test
命令tee允许标准输出同时把内容追加文件中的例子实践
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@web01 data]# ls |tee -a test1 () dir1 dir2 dir3 file1.txt file5.txt inittab ip.txt mac.txt passwd.txt test0 test1 test2 test4 test5 test6 test7 test8 test9 test.txt [root@web01 data]# cat test1 1 2 3 () dir1 dir2 dir3 file1.txt file5.txt inittab ip.txt mac.txt passwd.txt test0 test1 test2 test4 test5 test6 test7 test8 test9 test.txt
1.13 思想:做运维的多个好处
1、做运维可以认识更多的人,同时被更多的人认识。
2、做运维可以让自己的沟通、交际能力变得比开发人员更强。
3、相比开发岗位,运维的岗位更重要一些。
4、运维岗位的竞争对手比开发岗位更弱些,同时运维知识不需要高学历就能轻松掌握。