linux shell中常见文本处理工具
zan
#技术#编程#Web开发
这一节我们将介绍linux下面文本处理的一些工具和命令
sort
sort 以每一行为单位,来给一个文本文件排序。默认是按升序来排序的
-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排序一下。
-c # 统计每行的重复的次数
-d # 只输出重复的行
-i # 比较的时候忽略字母的大小写
-u # 只输出没有重复的行
-f n # 忽略前面的n个字段,比喻看日志文件的时候,可以用此选项忽略前面的时间
-s n # 忽略前n个字符,可以和-f一起使用
wc
用来统计一个文件的行数,字符数和字节数。
-c #统计一个文件的字节数
-m #统计一个文件的字符数
-l #统计一个文件的行数
-L #统计最长行的长度
-w #统计文件中的单词数目
tr
tr的作用是用来替换,删除,压缩文本。下面看看具体的例子
-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只针对集合里单个的字符进行替换,例如
tr ‘12’ ‘asdf’ #该命令并不会把12替换为asdf,而是只做一一映射,将1替换为a
#将2替换为s,集合2中多余的字符,自动被忽略
tr ‘asdf’ ‘12’ #同理这条命令只会把a替换为1,s,d,f都分别替换为2
#因为set1大于set2,会一直重复set2中的最后一个字符