|

楼主 |
发表于 2005-7-28 18:18:24
|
显示全部楼层
cat -ns yourfile | sort -u -k 2 | sort -n -k 1 | cut -f 2- >yournewfile
# 给文件编上行号以便以后利用这个行号恢复行序
cat : -n 输出行号
-s 压缩多个空白行到一个空白行
# 第一次sort去掉重复的行,第二次sort恢复行序
sort: -u uniq 去掉重复行
-k 2 按第二列排序(列之间用空格分隔?)
-n 按数字序,否则按词典序
# 去掉第一步中添加的行号
cut -f 2- 只要第二列到每行末尾
这个方法有一个bug,就是会把文件中所有的空行变成只有一个空行, 这个
bug是sort -u 导致的, 因为所有空行排到一起再uniq成一个空行了.
uname -a
Linux dieken 2.4.27-2-686 #1 Thu Jan 20 11:10:41 JST 2005 i686 GNU/Linux
cat --version
sort --version
cut --version
(coreutils) 5.2.1
Written by Mike Haertel and Paul Eggert.
Copyright (C) 2004 Free Software Foundation, Inc. |
|