Linux系统sort和uniq命令联合使用

Linux系统sort和uniq命令联合使用,第1张

给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要求输出两集合的交集、并集、差集,输出的结果只包括唯一项。

交集定义为同时出现在两个文件中的记录项;

并集定义为出现在任何一个文件中的记录项;

差集( A-B )定义为出现在A中而且不出现在B中的记录;

对称差集定义为只出现在一个文件中的记录;

假设 a.txt 包括 a, c, b 三行。假设 b.txt 包括 d, e, c, b 四行。

交集 ,把两个文件放到一起排序,只输出次数多于一次的项:

$ sort a.txt b.txt | uniq -d

并集 ,把两个文件放到一起排序,重复的项只算一次:

$ sort a.txt b.txt | uniq

差集(A-B) ,把B的元素重复2份和A的元素放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt b.txt | uniq -u

对称差 ,把两个文件放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt | uniq -u

指定分隔符(-t)及基于哪一列(-k)、基于数值(-n) 、逆序(-r)进行排序

#排序之后删除了重复行,同时在行首位置输出该行重复的次数:

执行命令:sort testfile | uniq -c ,输出结果如下

#仅显示存在重复的行,并在行首显示该行重复的次数:

执行命令:sort testfile | uniq -dc,输出结果如下

#仅显示没有重复的行:

执行命令:sort testfile | uniq -u,输出结果如下

方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件。这种方法可以一次性合并任意多个文件。

用法示例:

将file1.txt和file2.txt合并到file.txt

$ cat file1.txt file2.txt >file.txt

方法二:只使用cat命令读入一个文件,然后使用>>将文本流追加到另一个文件的末位。

用法示例:

将file1.txt追加到file2.txt的末尾

$ cat file1.txt >>file2.txt

扩展资料:

反之分割文件

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。

1、在Linux下用split进行文件分割:

模式一:指定分割后文件行数

对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

命令:split -l 300 large_file.txt new_file_prefix

模式二:指定分割后文件大小

split -b 10m server.log waynelog

对二进制文件我们同样也可以按文件大小来分隔。

2、将一个大文件分成若干个小文件方法

例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式

先利用wc -l BLM.txt

读出 BLM.txt 文件一共有多少行

再利用 split 命令

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

将文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7106300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存