Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2073183
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-08-06 18:35:39


侠客



CU编号: 806723
注册:2009-2-3
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:26 

有一个文件,是N行M列,我想以 a 列 为标准 找出在 a列中: 有至少一行数据 与其他行的数据重复的 数据

例如:  如下文件:
97650021391620011308|100022|
1234562391620011308|100022|
97650021391620011308|111113|
4213452391621114620|111118|

以第一列为基准的话, 执行命令后 可以输出 : 97650021391620011308
以第二列为基准的话, 执行命令后 可以输出 : 100022



您对本贴的看法:
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:33 

awk -F "|" '{a[$1]++}a[$1]==2{print $1}' file

awk -F "|" '{a[$2]++}a[$2]==2{print $2}' file

[ 本帖最后由 ywlscpl 于 2009-8-6 16:37 编辑 ]



您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |

侠客



CU编号: 806723
注册:2009-2-3
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:37 

哇....ywlscpl  虽然你的用户很难写,我看了两次才拼完,但是我不得不说声,谢谢.....你应该做管理员才对.
我试过了,高手,向你学习....



您对本贴的看法:
| | |
  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 16:37 

回复 #1 piaoxifengxiaoe 的帖子

第一列: awk -F '|' '{print $1}' ur | sort  -k1n | uniq -c | awk '$1>1{print $2}'
第二列: awk -F '|' '{print $2}' ur | sort  -k1n | uniq -c | awk '$1>1{print $2}'



您对本贴的看法:
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:38 

回复 #3 piaoxifengxiaoe 的帖子

刚才那个貌似写复杂了



您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |

侠客



CU编号: 806723
注册:2009-2-3
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:39 

大侠们....好激动的,以后shell有问题,请多指教啊.我也努力学习.谢谢



您对本贴的看法:
| | |
  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 16:41 

回复 #2 ywlscpl 的帖子

改进一下:
第一列: awk -F "|" '{a[$1]++}a[$1]>1{print $1}'  urfile
第二列: awk -F "|" '{a[$2]++}a[$2]>1{print $2}'  urfile

[ 本帖最后由 greendays 于 2009-8-6 16:43 编辑 ]



您对本贴的看法:
| | |

侠客



CU编号: 806723
注册:2009-2-3
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:46 

回复 #7 greendays 的帖子

我刚刚用你的脚本也试了,不过 出现 有三行重复的话,这样的话就会打印出两行(有四行的话就会打印出三行一样重复的数据)



您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-06
帖子:
精华:0







来自:小山村
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:49 



CODE:
awk -F \| 'a[$2]++==1{print $2}' urfile




您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


| | |

侠客



CU编号: 806723
注册:2009-2-3
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:51 

法师[黑哥]好牛啊.....:em02:



您对本贴的看法:
| | |

» » »

  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 16:56 

回复 #8 piaoxifengxiaoe 的帖子

看懂ywlscpl 的代码了!不能那样修改!! 很抱歉!!



您对本贴的看法:
| | |
  帅哥 (黑哥)
法师



CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-06
帖子:
精华:0







来自:小山村
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 16:59 

回复 #10 piaoxifengxiaoe 的帖子

汗,看来你还没见过大蛇屙屎!



您对本贴的看法:

__________________________________

LIVE FREE OR DIE!     K.I.S.S.


| | |
  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-6 17:02 

回复 #10 piaoxifengxiaoe 的帖子

黑哥的精简是对的! 他和ywlscpl 用了同样的算法.



您对本贴的看法:
| | |
(渔夫)
光明使者



CU编号: 463876
注册:2006-9-10
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 17:15 

awk -F \| 'a[$2]++==1{print $2}'

能大概说一样解释一下吗,变量和扫行过程,谢了.



您对本贴的看法:

__________________________________

自由 开放 让世界随我而动
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-06
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 17:39 

回复 #14 a.a 的帖子

awk -F \| 'a[$2]++==1{print $2}'

$2第一次出现  a[$2]值为空即0
0==1{print $2}
   
$2第2次出现   a[$2]=1
1==1{print $2}

.....

涉及一个知识点:var++形式先取值再自增



您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |

骑士




CU编号: 223664
注册:2005-2-7
最后登录: 2009-08-06
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-6 17:52 

高, 总是有学不完的东东!!



您对本贴的看法:
| | |

» » »
阅读(1215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~