IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [shell学习笔记]sort、uniq、cut、paste和split用法详解

    admin发表于 2012-08-24 12:18:21
    love 0

    今天学习了sort, uniq, cut, paste和split命令的用法,其中sort的选项比较多一些,其它的命令就比较简单了

    关于sort,本站之前写过一篇关于sort的高级用法,请点击这里

    一、Sort命令

    sort [OPTION]… [FILE]…

    对文件按指定的域进行排序

    常用选项:
    1. -c: 检测文件是否已经排序
    2. -m: 将两个已经排序的文件进行合并
    3. -u: 在排序过程中,删除重复的行
    4. -o: 保存排序后的文件
    5. -t: 域分隔符,默认为空格和tab
    6. -n: 指定待排序的域为数字类型
    7. -r: 逆序排序,默认为正向排序
    8. -b: 按域排序时忽略第一个空格
    9. +n: 按照第n个域进行排序,域从第0个开始计数
    10. +m.n: 按照第m个域的第n个字符开始开始排序
    11. -k: 按照第k个域进行排序,域从第1个开始计数
    常见的用法例子:
    
    sort  -o output.txt  your_file.txt  #对文件按第一域进行排序,将排序结果保存到output.txt
    
    sort -t: -r +2n your_file.txt #对文件按照第2个域进行逆向排序,第二个域为数字类型,同时分割符为:
    
    df | sort -b -r -k5  #按照磁盘的占用率从高到底进行排序输出
    

    二、uniq命令

    uniq [OPTION]… [INPUT [OUTPUT]]

    从文件中去除或删除重复的行,在功能上和sort -u类似

    常用选项:
    1. -u: 只显示不重复的行
    2. -d: 只显示重复的行
    3. -c: 打印每一行出现的次数
    4. -fn: 忽略前n个域
    常用的用法例子:
    
    uniq sort_file.txt #删除文件中重复的行
    
    uinq -c sort_file.txt  #显示每行出现的次数
    
    uinq -d sort_file.txt  #只显示出现次数>=2的行
    

    三、join命令

    join [OPTION]… FILE1 FILE2

    将两个排序的文件合并为一个文件

    常用选项:
    1. -j n  m: 选择连接的域,n为文件号,m为域号
    2. -o n.m : 指定显示的域,n为文件号,m为域号
    3. -an: 显示文件n中不匹配的文件行
    4. -t: 定义分隔符
    常见的用方法:
    
    join  sort_file1.txt  sort_file2.txt  #合并两个文件,以第一个键排序
    
    join  -j 1 1 -j 2 2  sort_file1.txt sort_file2.txt  #按第一文件的第一个域和第二个文件的第二个域作为key,进行合并
    
    join -o 1.1 , 2.2  sort_file1.txt sort_file2.txt  #只显示第一个文件的第一个域和第二个文件的第二个域
    

    四、cut命令

    cut OPTION… [FILE]…

    从文件中获取指定域

    常用选项:
    1. -d: 分割符
    2. -f: 输出域的编号
    3. -c: 输出字符的编号
    常见的用法:
    
    cut -d: f3 file.txt #输出以:分割的第三个域
    
    cut  -d: f 1, 6 file.txt #输出以:分割的第一个和第六个域
    
    ls -al | cut -c1-3  #显示ls输出每行的前三个字符
    

    五、paste命令

    paste [OPTION]… [FILE]…

    将文件的行进行merge

    常用选项:
    1. -d:  指定两个文件的行合并后的分割符
    2. -s: 将每个文件合并为一行,而不是按行进行合并
    常见用法:
    
    paste file1 file2 #将两个文件的每行合并
    
    paste -d: file1 file2 #将两个文件的每行合并,分隔符为:
    
    paste -s file1 file2 #将file1的内容合并为一行,将file2的内容合并为一行
    

    六、split命令

    split [OPTION]… [INPUT [PREFIX]]

    将文件按大小分为多份

    常用选项:
    1. -output_file-size: 指定文件被分割的行数
    2. prefix: 输出文件的前缀
    常见用法:
    
    split -20 file #将文件每20行进行一次分割
    

      您可能对下面文章也感兴趣:

      • linux通过Shell获得本机ip地址方法
      • 定时备份网站代码与数据的shell工具
      • java中调用windows_cmd或linux下命令
      • 使用Bash中Complete自动补全命令
      • Linux中关于Cache Memory的介绍


    沪ICP备19023445号-2号
    友情链接