linux shell中常见文本处理工具

发表于: 2013年11月04 00:00

这一节我们将介绍linux下面文本处理的一些工具和命令

####sort

sort 以每一行为单位,来给一个文本文件排序。默认是按升序来排序的

:::bash
-d   #排序时忽略行前面的空白,从第一个非空白的地方开始比较
-f   #忽略字母的大小写
-i   #忽略不可打印字符

-n   #根据数字的大小进行排序
     #比如说 666和1000 默认的排序结果是1000<666(因为字典序里1<6)
         #加上 -n 参数表示按数字大小排序。排序的结果就是666<1000

-u   #表示去掉重复的行
-r   #表示逆序输出

-t   #指定分割符,默认是空白
-k   #指定排序的键值,此参数一般结合-t使用,
     #我想对passwd文件,按用户id来排序,则可以用

sort -t : -k 3,3 -n /etc/passwd 
     # -t 指定用 : 来分割各个字段
     # -k 3,3 排序键值所在字段的起始编号,和终止编号。字段编号从1开始
     # 第二个数省略的时候,会一直比较到行结束
     # -k 参数还可以指定字段的偏移值
     # 例如 -k 3.2 5表示从第三个字段的第二个字符开始,到第五个字段结束
     # -n 表示用数值来比较

####uniq

uniq的作用,是用来报告或者忽略重复的行。使用uniq的时候,有时要先用uniq排序一下。

:::bash
-c    # 统计每行的重复的次数
-d    # 只输出重复的行
    -i    # 比较的时候忽略字母的大小写
-u    # 只输出没有重复的行
-f n  # 忽略前面的n个字段,比喻看日志文件的时候,可以用此选项忽略前面的时间
-s n  # 忽略前n个字符,可以和-f一起使用

####wc

用来统计一个文件的行数,字符数和字节数。

:::bash
-c    #统计一个文件的字节数
-m    #统计一个文件的字符数
-l    #统计一个文件的行数
-L    #统计最长行的长度
-w    #统计文件中的单词数目

####tr

tr的作用是用来替换,删除,压缩文本。下面看看具体的例子

:::bash
    -d  SET1         #删除集合中出现的字符
    -s  SET1         #删除连续的字符,只保留一个
    -t  SET1 SET2    #将集合SET1里出现的字符用SET2中的字符去替换

tr ‘a-z’ 'A-Z'   #将小写字母转化为大写字母

tr -d ‘abcd’     #删除文本中的a,b,c,d

tr -s '\n\t '    #压缩文件中的空行和空格和多余制表符

tr只针对集合里单个的字符进行替换,例如

:::bash
tr ‘12’ ‘asdf’  #该命令并不会把12替换为asdf,而是只做一一映射,将1替换为a
                #将2替换为s,集合2中多余的字符,自动被忽略

tr ‘asdf’ ‘12’  #同理这条命令只会把a替换为1,s,d,f都分别替换为2
        #因为set1大于set2,会一直重复set2中的最后一个字符
© 2018 - fluyy - 粤ICP备17114935号