Noo*_*tor 3 linux string shell ksh solaris
假设我有一个变量name持有一些字符串值
要获取最后n个字符,在bash中我们写:
$ echo "${name: -n}"
Run Code Online (Sandbox Code Playgroud)
什么是相同的方式ksh,我已经看到sed和awk方法,但我正在寻找的是一个线或管道解决方案类似于bash提取最后的字符
到目前为止,这些是错误和努力:
AB12 $ name="123456"
AB12 $ echo ${name:(-3)}
ksh: ${name:(-3)}: bad substitution
AB12 $ echo${name:0:-3}
ksh: echo${name:0:-3}: bad substitution
AB12 $ print ${name%?}
12345
AB12 $ echo "some string" | tail -c -1
tail: cannot open input
AB12 $ echo -n "my string discard"| tail -c -1
tail: cannot open input
AB12 $ echo "foo"| cut -c 1-2
fo
AB12 $ echo "foo"| cut -c -2
fo
AB12 $ echo $name
123456
AB12 $ echo "${name: -3}"
ksh: "${name: -3}": bad substitution
Run Code Online (Sandbox Code Playgroud)
我目前在Solaris上 - 如果这有帮助!
你可以使用它,比如n = 2(我们将在嵌套扩展中使用2个问号):
$ var="this is my var"
$ echo "${var#${var%??}}"
ar
Run Code Online (Sandbox Code Playgroud)
说明
这是一个嵌套扩展.
扩展${var%%??}嵌入扩展中${var# }.
该${var#string}扩展将它匹配"串"的变量开始切断任何东西.所以我们在这个例子中说,从匹配的变量的开头删除任何东西${var%%??}.
就其自身而言,${var%%??}匹配示例中变量的"this is my v",因为%%扩展匹配变量末尾的最长匹配.在这种情况下,两个正则表达式?
| 归档时间: |
|
| 查看次数: |
6886 次 |
| 最近记录: |