免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chzht001

如何将a13改为a12? [复制链接]

论坛徽章:
0
发表于 2007-07-04 09:31 |显示全部楼层
原帖由 網中人 于 2007-7-4 01:01 发表
A=a13
echo ${A//[0-9]}$((${A//[!0-9]}-1))


严重谢谢!!!
就要这样的代码,这是个脚本中用到的类似功能,写几行代码就会使代码很乱,这个很精炼,再次谢谢!!!

在我的机器上成功运行,但在特定的环境中(一个linux小核)运行报错,
Syntax error: bad substitution
好像是子shell不支持格式,不知还有没有其它格式?
运行echo ${A//[0-9]}也报上面的错

[ 本帖最后由 chzht001 于 2007-7-4 09:48 编辑 ]

论坛徽章:
0
发表于 2007-07-04 10:11 |显示全部楼层
除了bash,对字串的变换操作都很薄弱。
你可能还是需要expr或者类似的东西。
如果引入了那些外部的binary文件来做变换,硬写成一行,效率就会降低。

a=a13
a1=$(expr "$a" : "[^0-9]*\(.*\)")
echo ${a%${a1}}$((${a1}-1))

除非用sh本身字串处理,否则,这个有可能效率最高的了:)

[ 本帖最后由 ivhb 于 2007-7-4 10:15 编辑 ]

论坛徽章:
0
发表于 2007-07-04 10:14 |显示全部楼层
原帖由 chzht001 于 2007-7-4 09:31 发表


严重谢谢!!!
就要这样的代码,这是个脚本中用到的类似功能,写几行代码就会使代码很乱,这个很精炼,再次谢谢!!!

在我的机器上成功运行,但在特定的环境中(一个linux小核)运行报错,
Syntax e ...



netman老大的脚本最适合, 经常使用命令的同学, 这种语法本身放在脚本里面, 对于维护人员(几个月后你自己看都不一定明白)是一种噩梦. 简练的语法适用于交互式环境. 用更加明确的语法, 去编写脚本, 才更加合适. 你编写的脚本思路, 可以说特错大错.

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2007-07-04 10:19 |显示全部楼层
try

  1. A=a13
  2. echo ${A%%[0-9]*}$((${A##[!0-9]}-1))
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2007-07-04 10:24 |显示全部楼层
awk -v str=A13 'BEGIN{print substr(str,1,1)substr(str,2,length(str))-1}'

论坛徽章:
0
发表于 2007-07-04 10:29 |显示全部楼层
人好像不让用awk/perl哦

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2007-07-04 10:38 |显示全部楼层
原帖由 ivhb 于 2007-7-4 10:29 发表
人好像不让用awk/perl哦


这个可以吧
echo ${A:0:1}$((${A:1{#A}}-1))

[ 本帖最后由 寂寞烈火 于 2007-7-4 10:55 编辑 ]

论坛徽章:
0
发表于 2007-07-04 10:46 |显示全部楼层
原帖由 網中人 于 2007-7-4 01:01 发表
A=a13
echo ${A//[0-9]}$((${A//[!0-9]}-1))

网中人大牛的这个,没明白,能不能指点一下,或者你给个相关的文章让小弟学习一下!
致敬!

论坛徽章:
0
发表于 2007-07-04 10:53 |显示全部楼层
原帖由 小N哥哥 于 2007-7-4 10:46 发表

网中人大牛的这个,没明白,能不能指点一下,或者你给个相关的文章让小弟学习一下!
致敬!



字符串替换  ${variable//pattern/string}
算术运算     $(())


参考下netman的13问....:wink:

论坛徽章:
0
发表于 2007-07-04 11:17 |显示全部楼层
呵呵,明白了”//“这个meta字符的作用了!谢谢楼上的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP