linux常用命令小教程(八)

这里只会介绍在开发中会比较常用的命令,更多命令可以去手册中查询,还请见谅。

    文档编辑类

1、col:用于过滤控制字符。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符”>”和”>>”,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符

    语法

    col [-bfx][-l<缓冲区列数>]

参数

  • -b 过滤掉所有的控制字符,包括RLF和HRLF。
  • -f 滤除RLF字符,但允许将HRLF字符呈现出来。
  • -x 以多个空格字符来表示跳格字符。
  • -l<缓冲区列数> 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。

    实例

下面以 man 命令帮助文档为例,讲解col 命令的使用。

将man 命令的帮助文档保存为man_help,使用-b 参数过滤所有控制字符。在终端中使用如下命令:

    man man | col-b > man_help  

注:其中”|”用于建立管道,把man命令的输出结果转为col命令的输入数据。

2、comm:用于比较两个已排过序的文件

     实例

aaa.txt 与 bbb.txt 的文件内容如下:

[root@localhost text]# cat aaa.txt 
aaa 
bbb 
ccc 
ddd 
eee 
111 
222
[root@localhost text]# cat bbb.txt
bbb 
ccc 
aaa 
hhh 
ttt 
jjj
<p>执行 comm 命令输出结果如下:</p>
[root@localhost text]# comm aaa.txt bbb.txt 
aaa
                bbb
                ccc
        aaa
ddd
eee
111
222
        hhh
        ttt
        jjj
第一列  第二列  第三列

输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列是以制表符(\t)作为定界符。

3、grep命令用于查找文件里符合条件的字符串。

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为”-“,则grep指令会从标准输入设备读取数据。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

4、 egrep:用于在文件内查找指定的字符串。

    语法

    egrep [范本模式] [文件或目录]

实例

$    egrep hello test.txt

5、join:用于将两个文件中,指定栏位内容相同的行连接起来。

    实例

连接两个文件。

为了清楚地了解join命令,首先通过cat命令显示文件testfile_1和 testfile_2 的内容。

然后以默认的方式比较两个文件,将两个文件中指定字段的内容相同的行连接起来,在终端中输入命令:

    join testfile_1 testfile_2 

首先查看testfile_1、testfile_2 中的文件内容:

$ cat testfile_1 #testfile_1文件中的内容  
Hello 95 #例如,本例中第一列为姓名,第二列为数额  
Linux 85  
test 30  
cmd@hdd-desktop:~$ cat testfile_2 #testfile_2文件中的内容  
Hello 2005 #例如,本例中第一列为姓名,第二列为年份  
Linux 2009  
test 2006

然后使用join命令,将两个文件连接,结果如下:

$ join testfile_1 testfile_2 #连接testfile_1、testfile_2中的内容  
Hello 95 2005 #连接后显示的内容  
Linux 85 2009  
test 30 2006

文件1与文件2的位置对输出到标准输出的结果是有影响的。例如将命令中的两个文件互换,即输入如下命令:

    join testfile_2 testfile_1

最终在标准输出的输出结果将发生变化,如下所示:

$ join testfile_2 testfile_1 #改变文件顺序连接两个文件  
Hello 2005 95 #连接后显示的内容  
Linux 2009 85  
test 2006 30

6、sort:用于将文本文件内容加以排序。

    实例

在使用sort命令以默认的式对文件的行进行排序,使用的命令如下:

    sort testfile 

sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。

使用 cat命令显示testfile文件可知其原有的排序如下:

$ cat testfile      #testfile文件原有排序  
test 30  
Hello 95  
Linux 85

使用sort命令重排后的结果如下:

$ sort testfile #重排结果  
Hello 95  
Linux 85  
test 30

7、tr:用于转换或删除文件中的字符。tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

    语法

    tr [-cdst][--help][--version][第一字符集][第二字符集]  
    tr [OPTION]…SET1[SET2]

参数说明:

  • -c, –complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
  • -d, –delete:删除指令字符
  • -s, –squeeze-repeats:缩减连续重复的字符成指定的单个字符
  • -t, –truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
  •     实例

    将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:

        cat testfile |tr a-z A-Z 

    8、uniq:用于检查及删除文本文件中重复出现的行列。

  •     实例

    文件testfile中第2 行、第5 行、第9 行为相同的行,使用uniq 命令删除重复的行,可使用以下命令:

        uniq testfile 

    9、wc:用于计算字数

  •     $ wc testfile           # testfile文件的统计信息  
        3 92 598 testfile       # testfile文件的行数为3、单词数92、字节数598 

    其中,3 个数字分别表示testfile文件的行数、单词数,以及该文件的字节数。

    如果想同时统计多个文件的信息,例如同时统计testfile、testfile_1、testfile_2,可使用如下命令:

        wc testfile testfile_1 testfile_2   #统计三个文件的信息 

    输出结果如下:

    $ wc testfile testfile_1 testfile_2  #统计三个文件的信息  
    3 92 598 testfile                    #第一个文件行数为3、单词数92、字节数598  
    9 18 78 testfile_1                   #第二个文件的行数为9、单词数18、字节数78  
    3 6 32 testfile_2                    #第三个文件的行数为3、单词数6、字节数32  
    15 116 708 总用量                    #三个文件总共的行数为15、单词数116、字节数708 

2 条评论

发表评论