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

引用:
原帖由 dearvoid 于 2007-8-17 22:46 发表

此‘哎呀’何意?
就是“不知道该补充什么 了”       
原来语句可以更精简的:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[4189 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)-
[4189 0] ; awk '!seen[$0]++ { print $0; }' file
I'm a student.
You are a teacher.
He is a farmer.
We are workers.
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[4189 0] ; bye
      

awk的隐式if形式      
历时一个 hour, sed 版新鲜出炉 不晓得有没有 bug, 欢迎试用
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[16167 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)-
[16167 0] ; cat file.sed
#!/usr/bin/sed -nf

:loop
H
x
/\n\([^\n]*\)\n\([^\n]*\n\)*\1\($\|\n\)/ ! {
    x
    p
    bnext
}
s/\n[^\n]*$//
x
:next
$q
n
bloop
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[16167 0] ; sed -nf file.sed file
I'm a student.
You are a teacher.
He is a farmer.
We are workers.
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[16167 0] ; bye
      
不要用大文件测试哈, 效率比较低       
够bt,我一点都看不懂,如果是我,我决定使用Perl      
引用:
原帖由 zhuomingliang 于 2007-8-23 17:41 发表
够bt,我一点都看不懂,如果是我,我决定使用Perl
不实用哈, 俺只是想秀一下俺的 sed 水平       
亮兄和我想法一样, 呵      
看不懂!看不懂!看不懂!      
偶的解决方法,初学,欢迎拍砖~
原先发上来的有bug, 又改了一下,花了一个多小时鼓捣这么点东东出来,看来还是不会灵活运用
复制内容到剪贴板
代码:
sed -n '$!N;
/^\(.*\)\n\1$/b a
P
:a
D' youfile