Linux命令: sort, uniq, join, comm, diff, patch

来自实验楼实验报告:

第八次实验

  1. sort [选项] [文件名] :排序,结合其他命令,生成所需的输出

    -n 基于字符串的长度来排序,而不是字母值

    -k 指定排序关键字

    -b 默认对对整行进行排序,从每行的第一个字符开始。这个选项 程序忽略每行开头的空格,从第一个非空白字符开始排序

    -m 只合并多个输入文件

    -r 按相反顺序排序,结果按照降序排列,而不是升序

    -t 自定义分隔符,默认为制表符

    例:ls -l /usr/bin/ | sort -nr -k 5 | head -10 :对 ls 命令输出信息中的 空间使用大小字段进行排列 并显示前十个

  2. uniq [选项] [文件名] 经常和sort一起使用。默认从数据列表中删除任何重复行。只能用排过序的数据或文件作为输入。

    、-c 在每行前加上表示相应行目出现次数的前缀编号

    -d 只输出重复的行

    -u 只显示唯一的行

    -D 显示所有重复的行

    -f 比较时跳过前 n 列

    -i 在比较的时候不区分大小写

    -s 比较时跳过前 n 个字符

    -w 对每行第 n 个字符以后的内容不作对照

    例:ls /bin /usr/bin | sort | uniq -d :找出/bin和/usr/bin目录下所有相同的命令。

  3. join [选项] 文件1 文件2 :按照两个文件中共同拥有的某一列,将对应行拼接成一行。常用于关系数据库中。

    -j FIELD 等同于 -1 FIELD -2 FIELD,-j 指定一个域作为匹配字段

    -1 FIELD 以 file1 中 FIELD 字段进行匹配

    -2 FIELD 以 file2 中 FIELD 字段进行匹配

    -t 自定义分隔符,默认为制表符

    例:join -1 3 -2 3 c.txt d.txt 将两个文件c.txt和d.txt中第三个字段为匹配字段,连接两个文件

第九次实验:

 

    1. comm [选项] 文件1 文件2 :比较文本文件的内容。逐行比较已经排序的两个文件。显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。

      与join、uniq一样,只能用于已经排过序的数据

      -1 不输出文件1 特有的行

      -2 不输出文件2 特有的行

      -3 不输出共有的行

    2. diff [选项] 文件 :升级版的 comm,更强大复杂,处理多文件,可递归查源码等

      -c 上下文模式,显示全部内文,并标出不同之处

      -u 统一模式,以合并的方式来显示文件内容的不同

      -a 只会逐行比较文本文件

      -N 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。 若使用-N 参数,则 diff 会将文件 A 与一个空白的文件比较

      -r 递归比较目录下的文件

      所有的操作目的是将第一个文件变成第二个文件。的差异

    3. patch [选项] 补丁文件 :接受从diff程序的输出。搭伙 合作

      diff -Naur old_file new_file > diff_file

      -p num 忽略几层文件夹

      -E 如果发现空文件,删除它

      -R 取消打过的补丁

      例:diff -Naur file1.txt file2.txt > patchdiff.txt
      patch < patchdiff.txt :生成file1和file2的diff文件,后用patch命令更新file1.txt文件

 

posted @ 2017-08-30 17:20  number_5  阅读(322)  评论(0编辑  收藏  举报