我想要的非常簡單。給定一個字符串'這是我的測試字符串',我想從第二個位置返回到第二個位置的子字符串。例如: substring 'this is my test string' 1,-1
。我知道我可以使用剪切從字符串的開頭獲取內容,但我不確定如何從字符串的末尾輕鬆計算。幫幫我?如何獲得在Bash中使用正負索引的子串
回答
原來我可以使用awk如下做到這一點很容易:
echo 'this is my test string' | awk '{ print substr($0, 2, length($0)-2) }'
在awk中,蟒蛇,Perl等清潔但這裏的一個辦法做到這一點:
#!/usr/bin/bash
msg="this is my test string"
start=2
len=$((${#msg} - ${start} - 2))
echo $len
echo ${msg:2:$len}
結果is is my test stri
[在算術擴展使用反引號(反引號)已經由雙括號取代 - ( (...))和$((...)) - 以及非常方便的構建。](http://tldp.org/LDP/abs/html/arithexp.html) –
@Maxim謝謝爲了學校!我相應地更新了我的答案。 – AlG
現在看起來很漂亮! ) –
你可以只是單純bash
$ string="i.am.a.stupid.fool.are.you?"
$ echo ${string: 2:$((${#string}-4))}
am.a.stupid.fool.are.yo
Look ma,沒有全局變量或叉(除了明顯printf
)和徹底的測試:
substring()
{
# Extract substring with positive or negative indexes
# @param $1: String
# @param $2: Start (default start of string)
# @param $3: Length (default until end of string)
local -i strlen="${#1}"
local -i start="${2-0}"
local -i length="${3-${#1}}"
if [[ "$start" -lt 0 ]]
then
let start+=$strlen
fi
if [[ "$length" -lt 0 ]]
then
let length+=$strlen
let length-=$start
fi
if [[ "$length" -lt 0 ]]
then
return
fi
printf %s "${1:$start:$length}"
}
- 1. 如何獲得PHP子字符串的索引0
- 2. 如何在環境中使用looppass獲得環路的索引
- 3. 如何在計算子序列數後獲得字符串子序列索引?
- 4. 如何獲得搜索字符串在ASP.NET中使用的jqGrid
- 5. 如何獲得索引
- 6. 如何獲得搜索字符串的所有索引
- 7. 如何獲得使用C#的堆棧中的當前索引#
- 8. 如何獲得真正的引用者?
- 9. 如何獲得C中字符串的字符索引?
- 10. 如何獲得字符串中第一個數字的索引
- 11. 如何獲得字符串中的字符索引?
- 12. 如何獲得字符串中「%」的最後一個索引?
- 13. 如何獲得離子2中的活動標籤索引?
- 14. 如何在bash中引用捕獲正則表達式替換
- 15. 如何獲得索引部分標題中使用的UISearchBar
- 16. 如何獲得索引中的索引大小
- 17. 如何獲得zk中的子串?
- 18. 如何獲得的子字符串中
- 19. 如何獲得手錶使用引號運行bash腳本
- 20. 如何獲得使用getopts的在bash腳本的使用
- 21. 如何獲得在bash中字符串的第一部分
- 22. C++如何得到它的索引位置後的子串
- 23. 如何獲得正在使用的git
- 24. 從子div獲得父div的索引
- 25. 如何在tableview搜索欄中獲得對navigationcontroller的引用?
- 26. 無法獲得UICollectionViewCell的正確索引
- 27. c中的子串索引#
- 28. 如何從UICollectionView中的索引路徑正確獲取索引?
- 29. 如何使用jquery獲得一個類的索引的第一個孩子?
- 30. 子串索引
請注意,這將返回:「他是我的測試字符串」。輸入字符串(「g」)中的最後一個字符仍然存在。這是因爲[substr()]的第三個參數(https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#index-substr_0028_0029-function)指定了所需的輸出字符串,而不是索引。因此,我認爲這是正確的答案: 'echo'這是我的測試字符串'| awk'{print substr($ 0,2,length($ 0)-2)}'' – nofinator
@nofinator將來,您可以編輯帖子,當你看到這樣的錯別字。 – Eli