免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4130 | 回复: 10
打印 上一主题 下一主题

[其他] 請問處理變數問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-02 09:08 |只看该作者 |倒序浏览
本帖最后由 undeaduck 于 2014-02-02 10:52 编辑

可以請問有指令一串處理變數 例:  s90-111-00-1235

這變數中有幾個"-"的字元個數

當然"-"的個數可能會改變的所以請問有指令一串就可以得到嗎?

麻煩各位指教了

謝謝!!

可以請問可以不局限"-"嗎?也就是說重覆字元的個數的指令?

论坛徽章:
48
15-16赛季CBA联赛之青岛
日期:2021-01-07 13:41:2315-16赛季CBA联赛之上海
日期:2020-12-01 18:02:0720周年集字徽章-20	
日期:2020-10-28 14:14:2620周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之天津
日期:2020-10-18 22:51:412016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2015-12-22 13:30:48操作系统版块每日发帖之星
日期:2015-12-07 06:20:00操作系统版块每日发帖之星
日期:2015-09-04 06:20:002015亚冠之德黑兰石油
日期:2015-08-05 18:46:082015年亚洲杯之巴勒斯坦
日期:2015-04-19 10:42:502015年亚洲杯之巴林
日期:2015-04-09 08:03:23
2 [报告]
发表于 2014-02-02 13:01 |只看该作者
没看明白问题,指令一串是什么意思?

论坛徽章:
0
3 [报告]
发表于 2014-02-03 10:01 |只看该作者
就是指可以用一行指令就可以得到的

不需要用兩行以上語法得到的

謝謝!!

ex:現在的寫法

set a0 = s90-111-00-1235

set a = `echo $a0 | wc -c`
set b = `echo $a0 | tr -d "-" | wc -c`
set c = `echo "scale=0;$a - $b" | bc`
c值就是得到最後的結果

可是需至少寫三行才可以得到結果,是否可以寫一行就可以得到相同的結果呢?

意思就是這樣子

謝謝~~

论坛徽章:
1
白羊座
日期:2013-12-29 17:58:28
4 [报告]
发表于 2014-02-03 10:27 |只看该作者
本帖最后由 newoz 于 2014-02-03 10:32 编辑

可以啊。
  1. awk -F "-" '{print NF-1}' <<< s90-111-00-1235

  2. 3

  3. awk '{print gsub(/-/,"",$1)}' <<< s90-111-00-1235

  4. 3
复制代码

论坛徽章:
1
白羊座
日期:2013-12-29 17:58:28
5 [报告]
发表于 2014-02-03 10:31 |只看该作者
本帖最后由 newoz 于 2014-02-03 10:36 编辑

楼主是台湾还是香港来的朋友?欢迎欢迎。

不过这个表达和大陆的很不太一致啊。理解上有困难。

可以請問有指令 (命令)一串處理變數(一个字符串) 例:  s90-111-00-1235

這變數(变量)中有幾個"-"的字元個數(个数即可)

當然"-"的個數可能會改變的,(请加段点符号,否则不好理解)所以請問有指令一串 (一条命令,指令一串的说法类似日语的表达了)就可以得到嗎?

麻煩各位指教了

謝謝!!

可以請問可以不局限"-"嗎?也就是說重覆字元的個數的指令?

论坛徽章:
1
白羊座
日期:2013-12-29 17:58:28
6 [报告]
发表于 2014-02-03 10:37 |只看该作者
最后一句话的意思再解释一遍好吗?

你的意思是否是说: 如果不是"-"分割,而是其他字符的话,是否也可以统计,但是我要知道具体的会是那些字符做分割。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2014-02-03 15:01 |只看该作者
  1. echo s90-111-00-1235 | grep -o "-" | wc -l
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-02-04 00:16 |只看该作者
太謝謝各位了

我是台灣的,謝謝指教了

的確,有些寫法與說法可能會不同,我下次會再改進的

因為,在公司中也有認識在江蘇的同事,所以有些語法與說法會不同,真是不好意思了~


您說的 "最后一句话的意思再解释一遍好吗?你的意思是否是说: 如果不是"-"分割,而是其他字符的话,是否也可以统计,但是我要知道具体的会是那些字符做分割。" --> 基本上是"-"分割,只是想說如果"-"是變量的話,變化性比較多一點,畢竟程式寫靈活一點,還是比較好些

以下三種寫法,我試了一下,在terminal上試命令

awk -F "-" '{print NF-1}' <<< s90-111-00-1235

3 --> 我出現的是Missing name for redirect,不是出現 3,不知道我哪使用錯誤

awk '{print gsub(/-/,"",$1)}' <<< s90-111-00-1235

3  --> 我出現的是Missing name for redirect,不是出現 3,不知道我哪使用錯誤

echo s90-111-00-1235 | grep -o "-" | wc -l -> 這個命令是可以使用的,出現的是 3

以上,謝謝指教了~

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
9 [报告]
发表于 2014-02-04 05:23 |只看该作者
  1. [root@hp8 base]# echo s90-111-00-1235 | awk -F "-" '{print NF-1}'
  2. 3
  3. [root@hp8 base]# echo s90-111-00-1235 | awk '{print gsub(/-/,"",$1)}'
  4. 3
  5. [root@hp8 base]#
复制代码

论坛徽章:
0
10 [报告]
发表于 2014-02-04 20:41 |只看该作者
真是謝謝了

非常感謝了~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP