正则表达式如何只匹配11位的数字?

绮恩 2014-06-25 01:03:28
-bash-4.1$ echo "(138748783586,12345678912,555" | sed 's/\d\{11\}/11111111111/g'
(138748783586,12345678912,555
我向要的结果是:
(138748783586,11111111111,555
求各位大神,该怎么写表达式
最好是试验成功的结果
...全文
5780 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏天__ 2014-07-01
  • 打赏
  • 举报
回复

\< 
锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。 
\> 
锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。 
x\{m\} 
重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。 
x\{m,\} 
重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。 
x\{m,n\} 
重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

向良玉 2014-06-27
  • 打赏
  • 举报
回复
引用 6 楼 acrofox_yeah 的回复:
[quote=引用 5 楼 xiangliangyu2008 的回复:] [quote=引用 4 楼 acrofox_yeah 的回复:]
echo "(138748783586,12345678912,555" | sed 's/\<[[:digit:]]\{11\}\>/11111111111/g'
哥,你不匹配逗号,前面的数字也有11位,也会改掉的[/quote] 不会的,你可以试试。 \<和\>分别匹配词首和词尾,所以限制在11位数字。[/quote] 学习了
acrofox_yeah 2014-06-26
  • 打赏
  • 举报
回复
引用 5 楼 xiangliangyu2008 的回复:
[quote=引用 4 楼 acrofox_yeah 的回复:]
echo "(138748783586,12345678912,555" | sed 's/\<[[:digit:]]\{11\}\>/11111111111/g'
哥,你不匹配逗号,前面的数字也有11位,也会改掉的[/quote] 不会的,你可以试试。 \<和\>分别匹配词首和词尾,所以限制在11位数字。
向良玉 2014-06-26
  • 打赏
  • 举报
回复
引用 4 楼 acrofox_yeah 的回复:
echo "(138748783586,12345678912,555" | sed 's/\<[[:digit:]]\{11\}\>/11111111111/g'
哥,你不匹配逗号,前面的数字也有11位,也会改掉的
acrofox_yeah 2014-06-25
  • 打赏
  • 举报
回复
echo "(138748783586,12345678912,555" | sed 's/\<[[:digit:]]\{11\}\>/11111111111/g'
colddown 2014-06-25
  • 打赏
  • 举报
回复
如果楼主的意思是*只有*当一串数字的长度等于11的时候才做转换,下面的代码应该可以。 echo "(138748783586,12345678912,555" | sed -r 's/([^0-9])([0-9])/\1 \2/g' | sed -r 's/([^0-9]|^)[0-9]{11}([^0-9]|$)/\111111111111\2/g' | sed -r 's/ ([0-9])/\1/g' (138748783586,11111111111,555
向良玉 2014-06-25
  • 打赏
  • 举报
回复
sed里面不支持 \d
向良玉 2014-06-25
  • 打赏
  • 举报
回复
echo "(138748783586,12345678912,555"|sed 's/,[0-9]\{11\},/,11111111111,/g'

19,614

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧