Linux⽂本分析处理命令⼤全
⼀⽂带你从零掌握Linux⽂本分析处理命令,包括cat、sort、uniq、cut、paste、join、comm、diff、patch、tr、sed、aspell。
cat——进⾏⽂件之间的拼接并且输出到标准输出
常⽤选项:
-A,显⽰⽂本中的控制字符,如Tab和换⾏
-n,给⽂本⾏添加⾏号
-s,禁⽌输出多个空⽩⾏
sort——对⽂本⾏进⾏排序
sort可以把多个⽂件合并为⼀个有序的⽂件 >
选项:
-b(–ignore-leading-blanks)忽略每⾏开头空格,从第⼀个⾮空⽩字符开始排序
-f(–ignore-case)让排序不区分⼤⼩写
-n(–numeric-sort)基于字符串的数值来排序,⽽不是字母值
-r(–reverse)按相反顺序排序。结果按照降序排列,⽽不是升序。
-k(–key=field1[,field2])从对field1到field2之间的字符排序。
-m(–merge)把每个参数看作是预排序的⽂件。把多个⽂件合并成⼀个排好序的⽂件,不执⾏额外的排序
-o(–output=file)输出到⽂件
-t(–field-separator=char)⾃定义域分隔字符。默认域由空格或制表符分隔
⼏个应⽤场景:
#du命令指定⽂件或⽬录所占⽤的磁盘空间,结合sort -n和-r选项,输出占⽤磁盘空间最⼤的⽤户
du -s /usr/share/* |sort -nr |head
#对ls输出的⽂件⼤⼩进⾏排序
ls -l /usr/bin |sort -nr -k 5 |head
sort命令排序#可以有多个-k选项,即指定多个排序关键值
ls -l /usr/bin |sort --key=6r --key=5nr |head
uniq——通知或省略重复的⾏
给定⼀个排好序的⽂件,可以删除任意重复⾏,常与sort⼀块使⽤来清理重复输出。
选项:
-c 输出所有重复⾏,每⾏开头显⽰重复次数
-d 只输出重复⾏,⽽不是特有的⽂本⾏
-f n 忽略每⾏开头的n个字段,字段之间有且只能由空格分隔
-i 在⽐较⽂本⾏的时候忽略⼤⼩写
-s n跳过每⾏开头的n个字符
-
u 只输出独有的⽂本⾏,默认。
切⽚和切块
cut——删除⽂本⾏中的部分内容
从⽂本⾏中抽取⽂本,可以接受多个⽂件参数或标准输⼊。cut抽取⽂本相当不灵活,最好从其他程序产⽣的⽂件中抽取⽂本,⽽不适⽤于⼈输⼊的⽂本。
选项:
-c char_list 从⼀个⽂本⾏中抽取由char_list定义的⽂本。这个列表可能是由⼀个或多个逗号分隔开的数值区间组成
-f field_list 从⽂本⾏中抽取⼀个或多个由field_list定义的字段。这个列表可能包括⼀个或多个字段,或由逗号分隔开的字段区间
-d delim_char 指定-f选项后,使⽤delim_char做字段分隔符。默认字段之间由单个tab字符分隔开
–complement 抽取整个⽂本⾏,除了那些由-c/或-f选项指定的⽂本
#使⽤-d指定:为分隔符
cut -d ':' -f 1 /etc/passwd |head
paste——合并⽂本⾏
与cut相反,会添加⼀个或多个⽂本列到⽂件中。
应⽤场景:将⽂件中的两个字段调换位置。
join——连接两⽂件中具有相同字段的⾏ 
类似关系型数据库,将多个享有共同关键域的表格数据结合起来。默认情况join命令使⽤空⽩字符作为输⼊字段的界定符,⼀个空格作为输出字段的界定符。可以通过选项修改。
⽂本⽐较
comm——逐⾏⽐较两个已排序⽂件 
diff——逐⾏⽐较⽂件 
patch——对原⽂件进⾏diff操作
⾮交互式⽂本编辑
tr——替换或删除字符 
sed——⽤于⽂本过滤和转换的流编辑器 
aspell——交互式拼写检查⼯具
其他还包括split(把⽂件分割成碎⽚)、csplit(基于上下⽂把⽂件分割成碎⽚)、sdiff(并排合并⽂件差异)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。