LINUX核心命令实战总结五——文件过滤及内容编辑处理命令二

1.1 sort:文本排序

【功能的说明】

命令sort 将输入文本内容按照指定的规则进行排序,然后将排序结果输出

【语法格式】

 sort         [OPTION]...         [FILE]...
 sort          [选项]...              [文件]...

【使用说明】

命令sort 的参数及说明

参数选项

解释说明(带*的为重点)

-b

忽略每行开头存在的空格字符

-n

依照数值的大小进行排序(*

-r

倒序排列

-u

去除重复行

-t

指定分隔符(*

-k

按指定区间排序(*

【使用范例】

基础范例:

[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
View Code

 通过参数-n输出按数字从小到大顺序进行排序

[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
View Code

 通过参数-r使输出按照降序排序

[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
View Code

通过参数-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指定列排序

[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
View Code

aa-cd-dd-XX中的最后一列xx进行分组,再对最后一列xx进行分组,再对每组中的“IP2.2.3.XXX

的最后一列XXX进行排序。

[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
View Code

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

只显示唯一的行

【使用范例】

去重测试

[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
View Code

结合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格式

【功能说明】

DOSWindows系统)格式文件转换成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参数选项及说明

【使用范例】

[root@web01 data]# diff test8 test9
1,3d0
< 1
< 2
< 3
5a3,6
> 6
> 7
> 8
> 9
View Code

并排格式输出

[root@web01 data]# diff  -y test8 test9
1                                                             <
2                                                             <
3                                                             <
4                                                               4
5                                                               5
                                                              > 6
                                                              > 7
                                                              > 8
                                                              > 9
View Code

上下文输出格式

[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
View Code

统一格式输出

[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
View Code

比较两个目录

[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
文本反转
[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
View Code

1.10 tr:替换或删除字符

【功能说明】

命令tr从标准输入中替换、缩减或删减字符,并将结果写到标准输出

【语法格式】

tr         [OPTION]...         SET1                 [SET2]
tr         [选项]...             字符1             [字符2]

【选项说明】

命令tr的参数选项及说明

参数选项

解释说明(带*的为重点)

-d

删除字符(*

-s

保留连续字符的第一个字符,删除其他字符

-c

使用第一个字符串(setl)的补集,取反

【使用范例】

[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
View Code

使用tr命令“统一”字母大小写

[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
View Code

删除文件中出现的oby中的每个字符

[root@web01 data]# tr -d 'you' <test0
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
anhihangilvea
ilveilvei
View Code

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允许标准输出同时把内容写入(覆盖)到文件中的实践示例

[root@web01 dir1]# ls|tee ls.txt
file1.txt
ls.txt
test
[root@web01 dir1]# cat ls.txt
file1.txt
ls.txt
test
View Code

命令tee允许标准输出同时把内容追加文件中的例子实践

[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
View Code

1.13 思想:做运维的多个好处

1、做运维可以认识更多的人,同时被更多的人认识。

2、做运维可以让自己的沟通、交际能力变得比开发人员更强。

3、相比开发岗位,运维的岗位更重要一些。

4、运维岗位的竞争对手比开发岗位更弱些,同时运维知识不需要高学历就能轻松掌握。



原文地址:https://www.cnblogs.com/huihuangyan/p/13688111.html