打印到unix中的倒数第二个字符

时间:2017-08-18 10:50:58

标签: shell unix

如果字符串的长度为5,那么如何使用shell脚本打印字符串的第4个字符。我已将字符串存储在变量中,并将长度存储在其他变量中。但是如何打印长度为-1的字符串。

4 个答案:

答案 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