免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6424 | 回复: 23

怎样查找双写字母的单词,如look,hello  关闭 [复制链接]

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2004-03-19 17:57 |显示全部楼层
出一个题:如何列出含有双写字母的单词。sed,grep,awk,shell脚本等等...均可。
btw: 我已经有一个答案,并且测试通过,暂卖个关子,有兴趣者欢迎尝试。
  1. r2007@www r2007 $ cat a
  2. hello
  3. sed
  4. look
  5. All
  6. awk
  7. who
  8. r2007@www r2007 $ grep ' PATTERN' a
  9. hello
  10. look
  11. All
  12. r2007@www r2007 $
复制代码

论坛徽章:
0
发表于 2004-03-19 18:45 |显示全部楼层

怎样查找双写字母的单词,如look,hello

请007版主GG指教
$cat tmp
hello
sed
look
All
awk
who
  1. #!/bin/ksh
  2. cat tmp|while read i;do
  3. var=$(echo $i|sed 's/./&\
  4. /g'|uniq -c)
  5. echo $var|grep -q "\<2\>"&&echo $i
  6. done
复制代码
result:
hello
look
All

论坛徽章:
0
发表于 2004-03-19 18:46 |显示全部楼层

怎样查找双写字母的单词,如look,hello

很惭愧,一时之间没有思路,想出一个大笨方法,见笑了^^
  1. #!/bin/ksh
  2. #param -- filename
  3. file=$1
  4. pattern="aa"
  5. for alpha in b c d e f g h i j k l m n o p q r s t u v w x y z
  6. do
  7.   pattern=${pattern}"|"${alpha}${alpha}
  8. done
  9. egrep "$pattern" $file
复制代码

论坛徽章:
0
发表于 2004-03-19 18:57 |显示全部楼层

怎样查找双写字母的单词,如look,hello

汗。。。
var=$(echo $i|sed 's/./&\
/g'|uniq -c)

这句看不懂得。。。 s表示替换 .表示任意字符。。g表示全局。。那&表示的意思是??? 还有uniq的作用是什么?以前没用过

论坛徽章:
0
发表于 2004-03-19 20:22 |显示全部楼层

怎样查找双写字母的单词,如look,hello


  1. cat file
  2. hello
  3. helllo
  4. look
  5. hellllo
  6. sed
  7. look
  8. All
  9. awk
  10. who
  11. app
  12. lo
复制代码

  1. cat file|sed 'h;s/./ &/g;x;G;s/\n//'|awk '{
  2. for(i=2;i<=NF;i++)
  3.         if($i==$((i+1))){
  4.                 print $1
  5.                 break
  6.         }
  7. }
复制代码

  1. 结果
  2. hello
  3. helllo
  4. look
  5. hellllo
  6. look
  7. All
  8. app
复制代码

我把出现2次以上的也计算进去了,不知道是否符合题意?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2004-03-19 22:33 |显示全部楼层

怎样查找双写字母的单词,如look,hello

这是我的最初的答案。
grep (GNU grep) 2.5.1
  1. grep '\([a-z]\)\1' a
复制代码

大家对这句其中\1,\2等的用法应该很熟了
  1. sed 's/\(.*\)foo/\1bar/'
复制代码

前几天突然想到是否能够直接用在正则表达式中,一试果然可以,于是想拿来和大家共享,于是就有了此贴。
看到这么多的人回应,我受到不少启发,现将各位的方法整理一下。
MM的这段思路很独特,并且只匹配2连字,不包括2连字以上的。
sky的这段中规中矩,思路清晰,以不变应万变,立刻解决问题,两个字“实用”。
受forest启发,又有一个新的方法。
GNU Awk 3.1.3
  1. awk -F "" '{
  2. for(i=1;i<=NF;i++)
  3.         if($i==$((i+1))){
  4.                 print
  5.                 break
  6.         }
  7. }' a
复制代码

欢迎大家继续探讨,个人认为是否包括象gooogle这样的3连字都可以。

论坛徽章:
0
发表于 2004-03-19 22:49 |显示全部楼层

怎样查找双写字母的单词,如look,hello

grep '\([a-z]\)\1'
这个写法和perl的很相似

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2004-03-19 22:57 |显示全部楼层

怎样查找双写字母的单词,如look,hello

原帖由 "bjgirl" 发表:
'
这个写法和perl的很相似

记得MM说过正在学perl,对于perl,我是一个门外汉。问一下MM,不知能否用perl实现?

论坛徽章:
0
发表于 2004-03-19 22:59 |显示全部楼层

怎样查找双写字母的单词,如look,hello

007版主,请测试我略加修改后的

  1. #!/bin/ksh
  2. cat tmp|while read i;do
  3. var=$(echo $i|sed 's/./&\
  4. /g'|uniq -c|tr -d 1)
  5. echo $var|grep -q "\<[0-9]\{1,\}\>"&&echo $i
  6. done
复制代码

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
发表于 2004-03-19 23:08 |显示全部楼层

怎样查找双写字母的单词,如look,hello

我的机器没有安装ksh,但是我用bash跑了一下,
结果如下:
  1. r2007@www r2007 $ cat a
  2. hello
  3. sed
  4. look
  5. awk
  6. who
  7. gooogle
  8. r2007@www r2007 $ cat mm
  9. #!/bin/ksh
  10. cat a|while read i;do
  11. var=$(echo $i|sed 's/./&\
  12. /g'|uniq -c|tr -d 1)
  13. echo $var|grep -q "\<[0-9]\{1,\}\>"&&echo $i
  14. done
  15. r2007@www r2007 $ sh mm
  16. hello
  17. look
  18. gooogle
  19. r2007@www r2007 $
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP