LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1462|回复: 8

取值的问题?

[复制链接]
发表于 2003-5-22 12:31:22 | 显示全部楼层 |阅读模式
在chinaunix上见到一个问题,大家想想办法
有一整数,格式为:12345678,我想把12赋值给A,34赋值给B,5678赋值C,请问用什么命令可以实现?
发表于 2003-5-22 14:08:39 | 显示全部楼层
没有特定要求的话,直接
mystring="12345678"
A=${mystring:0:2}
B=${mystring:2:2}
C=${mystring:4:4}
 楼主| 发表于 2003-5-22 14:35:06 | 显示全部楼层
用cut命令也许更直观些;)
-c选想:只显示指定的字符
javalee//home/javalee>string=12345678
javalee//home/javalee>a=$(echo $string|cut -c1-2)
javalee//home/javalee>b=$(echo $string|cut -c3-4)
javalee//home/javalee>c=$(echo $string|cut -c5-8)
javalee//home/javalee>echo "a=$a\nb=$b\nc=$c"
a=12
b=34
c=5678
-b选项:置显示指定的字节
javalee//home/javalee>A=$(echo $string|cut -b1-2)
javalee//home/javalee>B=$(echo $string|cut -b3-4)
javalee//home/javalee>C=$(echo $string|cut -c5-8)
javalee//home/javalee>echo "A=$A\nB=$B\nC=$c"
A=12
B=34
C=5678

 楼主| 发表于 2003-5-25 11:10:22 | 显示全部楼层
penny的做法在BASH上可以通过,在KSH,CSH上不可以.
再问:如何提取随机数中固定的数值,如:一个任意的随机整数a=1234567890,怎么取他的头两位?末两位?,即,a1=12,a2=90.
发表于 2003-5-25 11:43:09 | 显示全部楼层
最初由 javalee 发表
penny的做法在BASH上可以通过,在KSH,CSH上不可以.
再问:如何提取随机数中固定的数值,如:一个任意的随机整数a=1234567890,怎么取他的头两位?末两位?,即,a1=12,a2=90.


a1=$(echo $a|cut -c1-2)
a2=$(echo $a|cut -c$($(echo $a|wc -c)-2)-)
 楼主| 发表于 2003-5-25 12:44:09 | 显示全部楼层
a2=$(echo $a|cut -c$($(echo $a|wc -c)-2)-)
我用的是KSH,BASH出不来提示错误!
ksh: 11-2: not found
bash: 11-2: command not found
可以用sed的方法:
javalee//home/javalee>a=1234567890
javalee//home/javalee>echo $a|sed 's/.*\(..$\)/\1/'
90
javalee//home/javalee>a=23894sklfhlasjfjkasd
javalee//home/javalee>echo $a|sed 's/.*\(..$\)/\1/'
sd
也可以用求$a的长度来取值,如:
javalee//home/javalee>a=1234567890
javalee//home/javalee>a2=$(echo $a|cut -c$(echo "${#a}-1"|bc -q)-$(echo ${#a}))
javalee//home/javalee>echo $a2
90
发表于 2003-5-25 12:52:00 | 显示全部楼层
bash again

lucida@fancyworld lucida $ export a=1234567890
lucida@fancyworld lucida $ echo ${a:0:2}
12
lucida@fancyworld lucida $ echo ${a{#a}-2:2}
90
 楼主| 发表于 2003-5-25 12:58:28 | 显示全部楼层
简单明了,佩服,可在我的KSH是行不通的,;)
发表于 2003-5-25 13:06:04 | 显示全部楼层

a1=$(echo $a|cut -c1-2)

a2=$(echo $a|cut -c$(expr $(echo $a|wc -c) - 2)-)

调试命令:
echo -n "lease input random number for variable a :";\
read a ;\
echo "输入数值a=$a" ;\
echo "首两位数a1=$(echo $a|cut -c1-2)" ;\
echo "末两位数a2=$(echo $a|cut -c$(expr $(echo $a|wc -c) - 2)-)"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表