• shell之sort,uniq,cut,tr


    # sort主要是要理解域
    
    # sort选项
    -c	测试文件是否已经分类
    -m	合并两个分类文件
    -u	删除所有复制行
    -o	存储sort结果的输出文件名
    -b	使用域进行分类时,忽略第一个空格
    -n	指定分类是域上的数字分类
    -t	域分隔符;用非空格或tab键分隔域
    -r	对分类次序或比较求逆,意思就是将得到的结果倒序排序
    -k  指定分类键(域)
    post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始
    
    # sort对域的参照方式
    关于sort的一个重要事实是它参照第一个域作为域0,域1是第二个域,等等。sort也可以使用整行作为分类依据。
    
    # 示例,将/etc/passwd文件按第三域(域2)分类
    因为第三域是数值,所以分类时候要加上n
    sort -t: -k 3n /etc/passwd
    
    # 指定分类键次序,先以第4域,在以第一域分类并求逆
    sort -t: -r -k4 -k1 /etc/passwd
    
    
    # uniq用法
    unip用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。可以认为uniq有点像sort命令中唯一性选项。对,在某种程序上讲正是如此,但两者又一个重要区别。sort的唯一性选项去除所有重复行,而uniq命令并不这样做。重复行是什么?在uniq里意即持续不断重复出现的行,中间不夹杂任何其它文本,示例
    >>> cat myfile.txt
    May Day
    May Day
    May Day
    Going Down
    May Day
    uniq将前三个May Day看作重复副本,但是因为第4行有不同的文本,故不认为第五行持续的May Day为其副本。uniq将保留这一行
    # 命令格式
    uniq -u d c -f inputfile outputfile
    -u	只显示不重复行
    -d	只显示有重复数据行,每种重复行只显示其中一行
    -c	打印每一重复行出现次数
    -n	n为数字,前n个域被忽略
    
    
    # cut用法
    cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
    ## 命令格式
    cut [options] file1 file2
    ## 选项
    -c list		指定剪切字符数
    -f field	指定剪切域数
    -d	指定与空格和tab键不同的域分隔符
    -c	用来指定剪切范围,如:-c1, 5-7剪切第一个字符,然后是第5到第7给字符。-c1-50剪切前50个字符
    -f	格式与-c相同
    -f1, 5剪切第1域,第5域
    -f1, 10-12 剪切第1域,第10域到第12域
    
    # 示例使用域分隔符,以冒号为分隔域,并剪切第3域
    cut -d: -f3 /etc/passwd
    
    
    # tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始
    
    # 选项
    -c	用字符串1中字符集的补集替换此字符集,要求字符集为ASCII
    -d	删除字符串1中所有输入字符
    -s	删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
    
    # 去除重复出现的字符
    tr -s "[a=z]"< /etc/passwd
    # 删除空行
    tr -s "[\012]" < plane.txt
    tf -s ["\n"] < plane.txt
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    分析java程序的命令总结jps,jstack
    Tomcat配置详解及tomcat的连接数与线程池
    Go入门练习题
    WebSocket的原理,及如何测试websocket是否连接成功
    day3-每天进步一点基础知识-正则练习题
    day2-每天进步一点基础知识
    day1-每天进步一点
    数组有没有length()这个方法? String有没有length()这个方法?
    List, Set, Map是否继承自Collection接口?
    启动一个线程是用run()还是start()?
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/15688951.html
Copyright © 2020-2023  润新知