如果字符串的长度为5,那么如何使用shell脚本打印字符串的第4个字符。我已将字符串存储在变量中,并将长度存储在其他变量中。但是如何打印长度为-1的字符串。
答案 0 :(得分:2)
如果您使用的是BASH,那么删除最后一个字符非常简单:
s="string1,string2,"
echo "${s%?}"
?
匹配任何单个字符,%?
从右侧删除任何字符。
那将输出:
string1,string2
否则,您可以使用此sed
删除最后一个字符:
echo "$s" | sed 's/.$//'
string1,string2
答案 1 :(得分:1)
您可以使用bash
"参数替换" :
string=12345
new=${string:0:$((${#string}-1))}
echo $new
1234
我在说:
new=${string:a:b}
其中:
a=0 (meaning starting from the first character)
和
b=${#string} i.e. the length of the string minus 1, performed in an arithmetic context, i.e. inside `$((...))`
答案 2 :(得分:1)
str="something"
echo $str | cut -c1-$((${#str}-1))
将结果显示为
somethin
如果您有两个不同的变量,那么您也可以尝试这个。
str="something"
strlen=9
echo $str | cut -c1-$((strlen-1))
cut -c1-8
将从第一个字符打印到第八个字符。
答案 3 :(得分:0)
只是为了好玩: 当你已经在变量中有字符串和长度时,
s="example"
slen=${#s}
你可以使用
printf "%.$((slen-1))s\n" "$s"
正如@anubhava所示,你也可以有一个干净的解决方案 所以不要试试
rev <<< "${s}" | cut -c2- | rev