Linux命令: sort, uniq, join, comm, diff, patch
来自实验楼实验报告:
第八次实验
-
sort [选项] [文件名] :排序,结合其他命令,生成所需的输出
-n 基于字符串的长度来排序,而不是字母值
-k 指定排序关键字
-b 默认对对整行进行排序,从每行的第一个字符开始。这个选项 程序忽略每行开头的空格,从第一个非空白字符开始排序
-m 只合并多个输入文件
-r 按相反顺序排序,结果按照降序排列,而不是升序
-t 自定义分隔符,默认为制表符
例:ls -l /usr/bin/ | sort -nr -k 5 | head -10 :对 ls 命令输出信息中的 空间使用大小字段进行排列 并显示前十个
-
uniq [选项] [文件名] 经常和sort一起使用。默认从数据列表中删除任何重复行。只能用排过序的数据或文件作为输入。
、-c 在每行前加上表示相应行目出现次数的前缀编号
-d 只输出重复的行
-u 只显示唯一的行
-D 显示所有重复的行
-f 比较时跳过前 n 列
-i 在比较的时候不区分大小写
-s 比较时跳过前 n 个字符
-w 对每行第 n 个字符以后的内容不作对照
例:ls /bin /usr/bin | sort | uniq -d :找出/bin和/usr/bin目录下所有相同的命令。
-
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中第三个字段为匹配字段,连接两个文件
第九次实验:
-
comm [选项] 文件1 文件2 :比较文本文件的内容。逐行比较已经排序的两个文件。显示结果包括 3 列:第 1 列为只在第一个文件中找到的行,第 2 列为只在第二个文件中找到的行,第 3 列为两个文件的共有行。
与join、uniq一样,只能用于已经排过序的数据
-1 不输出文件1 特有的行
-2 不输出文件2 特有的行
-3 不输出共有的行
-
diff [选项] 文件 :升级版的 comm,更强大复杂,处理多文件,可递归查源码等
-c 上下文模式,显示全部内文,并标出不同之处
-u 统一模式,以合并的方式来显示文件内容的不同
-a 只会逐行比较文本文件
-N 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录。 若使用-N 参数,则 diff 会将文件 A 与一个空白的文件比较
-r 递归比较目录下的文件
所有的操作目的是将第一个文件变成第二个文件。的差异
-
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文件