34 1234
发新话题
打印

如何删去重复行并保持顺序不变?

如何删去重复行并保持顺序不变?

文本如下:
I'm a student.
You are a teacher.
He is a farmer.
He is a farmer.
He is a farmer.
We are workers.
将重复行找到,并删去只留一行,并且文本顺序不能改变,如何用sed实现?

[ 本帖最后由 dearvoid 于 2007-8-16 09:19 编辑 ]      
前进、前进、再前进

TOP

sed可以做行比较吗      
面包会有的 女人也会有的
_______________________

TOP

用 uniq 比较方便:
复制内容到剪贴板
代码:
cax@ibm:~/Desktop> cat a
I'm a student.
You are a teacher.
He is a farmer.
He is a farmer.
He is a farmer.
We are workers.
cax@ibm:~/Desktop> cat  a | sort
He is a farmer.
He is a farmer.
He is a farmer.
I'm a student.
We are workers.
You are a teacher.
cax@ibm:~/Desktop> cat  a | sort | uniq
He is a farmer.
I'm a student.
We are workers.
You are a teacher.
      
Advance Monitor - Linux Monitoring Solution

TOP

LZ要求顺序不变      
面包会有的 女人也会有的
_______________________

TOP

如果重复行挨在一起, 不用sort就可以了      
面包会有的 女人也会有的
_______________________

TOP

看来用awk比较方便!      
前进、前进、再前进

TOP

怎么个方便法      
面包会有的 女人也会有的
_______________________

TOP

引用:
原帖由 TUDOU01 于 2007-8-11 10:36 发表
文本如下:
I'm a student.
You are a teacher.
He is a farmer.
He is a farmer.
He is a farmer.
We are workers.
将重复行找到,并删去只留一行,并且文本顺序不能改变,如何用sed实现?
用 sed 有点儿难度       
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

引用:
原帖由 li-jiahuan 于 2007-8-11 15:42 发表
怎么个方便法
用 awk 这么个方便法:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[30959 0]
; cat file
I'm a student.
You are a teacher.
He is a farmer.
He is a farmer.
He is a farmer.
We are workers.
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[30959 0]
; awk '{ if (!seen[$0]++) { print $0; } }' file
I'm a student.
You are a teacher.
He is a farmer.
We are workers.
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[30959 0]
; bye
[ 本帖最后由 dearvoid 于 2007-8-22 12:26 编辑 ]      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

又是这种伎俩:)      
面包会有的 女人也会有的
_______________________

TOP

 34 1234
发新话题