[Linux]去除重复行

文本处理时,经常要删除重复行,下面是三种方法

第一,用sort+uniq,注意,单纯uniq是不行的。

sort -n test.txt | uniq

第二,用sort+awk命令,注意,单纯awk同样不行,原因同上。

[[email protected] ~]$ uniq --help
用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
不附加任何选项时匹配行将在首次出现处被合并。
长选项必须使用的参数对于短选项时也是必需使用的。
 -c, --count              //在每行前加上表示相应行目出现次数的前缀编号
 -d, --repeated          //只输出重复的行
 -D, --all-repeated      //只输出重复的行,不过有几行输出几行
 -f, --skip-fields=N     //-f 忽略的段数,-f 1 忽略第一段
 -i, --ignore-case       //不区分大小写
 -s, --skip-chars=N      //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
 -u, --unique            //去除重复的后,全部显示出来,根mysql的distinct功能上有点像
 -z, --zero-terminated   end lines with 0 byte, not newline
 -w, --check-chars=N      //对每行第N 个字符以后的内容不作对照
 --help              //显示此帮助信息并退出
 --version              //显示版本信息并退出
时间: 2024-10-11 17:34:51

[Linux]去除重复行的相关文章

实例详细说明linux下去除重复行命令uniq

地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行.如果您想先对输入排序,使用sort -u. 2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中

SQL语句技巧之去除重复行

去除表中重复行数据,可能大家立马就想到的是用DISINTCT关键字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多个字段重复的行(即:部份相同,部份不相同),那么该如何做呢?我通过多年数据库编写经验,整理了如下方法,供大家参考和使用. 方法1:适用于返回较少字段 select F1,F2,F3,MAX(F4) FROM TABLENAME GROUP BY F1,F2,F3 方法2:适用于返回行所有字段,需指定不相同的字段 select * FROM TABLENAME

DataTable去除重复行

//抽取dt中的特定列"Region","Cur","Year"组合成新的dat DataTable dat = dt.DefaultView.ToTable(false, new string[]{ "Region","Cur","Year" }); DataView dv = new DataView(w_dt); //虚拟视图吧,我这么认为 //去除dv中的重复行并组合成新的dt2

sublime 去除重复行或者只保留唯一值

去除重复行或者只保留唯一值,分别对应两件事情. 去除重复行,指的是,将text 文档中所有有重复行的行不做保留,全都删除. 只保留唯一值,指的是,将text 文档中有重复行的保留且仅保留一个值,最后就实现整个text中每一行均为唯一值. 这两种方法都是基于正则表达式替换的方法,查找的模式是一样的(利用了正则表达式capture group的方法),区别在于替换目标的内容不同. sublime 去除重复行 首先,点击菜单栏edit -- sort进行排序. 查找内容为: ^(.+)$[\r\n](

ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号. 示例: xlh           row_num 1700              1 1500              2 1085             

SQL查询语句去除重复行

1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键) 如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组 select * from table where id in (select min(id) from table group by [去除重复的字段名列表,....])

T-SQL去除重复行

例子: CREATE TABLE [dbo].[testDT]( [bh] [varchar](50) NULL, [name] [varchar](50) NULL, [gender] [int] NULL, [email] [varchar](50) NULL ) 测试数据:12 li 1 [email protected] 12 li 1 [email protected] 15 wang 0 [email protected] 13 zhang 1 [email protected] 1

【Stackoverflow问题精选】SQL中去除重复行

问题 假设有一个数据量比较大的表(例如300,000+行),其中有重复的行(除了主键外,其他的列数据是一样的),如何快速去重呢? 我的表类似这样 MyTable ----------- RowID int not null identity(1,1) primary key, Col1 varchar(20) not null, Col2 varchar(2048) not null, Col3 tinyint not null 精华回答 假设没有null值,你可以先对其他列做group by,

SqlServer去除重复行

--第一个案例 CREATE TABLE t(    id INT IDENTITY(1,1) PRIMARY KEY,    a VARCHAR(10),    b VARCHAR(10)) --插入数据INSERT INTO t SELECT 'aa','bb' UNION ALLSELECT 'a1','bgb' UNION ALLSELECT 'aa','bb' UNION ALLSELECT 'a2','bb' UNION ALLSELECT 'aa3','beeb' UNION AL