讓說,我有一個變量name
拿着一些字符串值擷取在KSH字符串的最後n個字符
爲了獲取最後的n個字符,在bash我們寫:
$ echo "${name: -n}"
什麼是等價的方式ksh
,我已經看到sed
和awk
方法,但我所尋找的是一條線或管道解決方案類似bash
提取最後一個字符
這些都是錯誤和EFF沃茨至今:
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
我在Solaris上目前 - 如果這有助於!
dint瞭解此部分=>'var#$ {var%??}'?? :) – NoobEditor
這是一個嵌套擴展。擴展$ {var %% ??}嵌入在擴展$ {var#}中。 $ {var#string}擴展將切斷與匹配'string'的變量的開始處的任何內容。所以我們在這個例子中說,從與變量$ {var %% ??}匹配的變量的開頭刪除任何東西。就其本身而言,$ {var %% ??}匹配示例中變量的「this is my v」,因爲%%擴展匹配變量末尾最長的匹配。在這種情況下,兩個正則表達式?希望有所幫助。 – Ell
這是獲取Korn Shell腳本的最後幾個字符串字符的正確示例。非常感謝:)埃爾 – Shankar