2014-02-06 40 views

回答

2

使用下面的腳本

#!/bin/bash 
string="anyanyanay" 
echo ${string#${string%?}} 

輸出: y

${string%?}從字符串中刪除最後一個字符。

${string#<character>}從字符串開始刪除characters

在這種情況下

${string%?} = anyanyana

${string#${string%?}} = ${string#anyanyana} = y

4

純BASH:

last="${string:(-1):1}" 

OR:

[[ "$string" =~ (.)$ ]] && last="${BASH_REMATCH[1]}" 
echo "$last" 
y 

使用SED:

last=$(sed 's/^.*\(.\)$/\1/' <<< "$string") 
echo "$last" 
y 

用awk:

awk -F'\0' '{print $NF}' <<< "$string" 
y 
+1

+1非常完整!我也想過'echo「$ string」| rev | cut -c1' – fedorqui

+1

Thanks @fedorqui爲了完整起見,當我在我的答案中添加grep時,我看到Kent發佈了相同的內容,所以我避免發佈它:) – anubhava

+1

+1,還有其他方法嗎? – BMW

0

使用sed

echo $string|sed 's/.*\(.\)$/\1/' 
0

您可以使用負指數以相反順序獲取字符。 -1是最後一個,-2是倒數第二等

回聲$字符串[-1]

+0

你試過了嗎?它只是返回'anyanyanay [-1]' – fedorqui

1
echo $string | sed -E 's/(.*)(.)$/\2/' 

echo $string | tail -c 2 
2
kent$ echo "anyanyanay"|grep -o '.$' 
y 
相關問題