對於示例 - $x=xyz.2.3.4.fc15.i686
輸出需要= 15 (即FC和.i686之間)Bash shell腳本抓取一個子字符串?
0
A
回答
13
$ x=xyz.2.3.4.fc15.i686
$ y=${x#*fc}
$ z=${y%.*}
$ echo $z
15
#
左條%
右剝
3
有幾種方法做到這一點。如果原始字符串的長度是固定的,你可以使用cut
,如:
echo YOUR_INPUT_STRING | cut -b n-z
其中n
是起點和z
是結束位置。
如果點的數量是恆定的,請嘗試:
echo YOUR_INPUT_STRING | cut -d '.' -f 5 | cut -b 3-
或者你也可以使用類似awk
echo YOUR_INPUT_STRING | awk '{print gensub(".*fc([0-9]+)\.i686","\\1","g",$0)}'
HTH
4
隨着bash
或ksh
你不再需要外部工具:
bash-4.2$ x='xyz.2.3.4.fc15.i686'
bash-4.2$ tempx="${x#*fc}"
bash-4.2$ echo "${tempx%.i686}"
15
或者,如果你的位置,類似another answer但沒有外部公用事業希望:
bash-4.2$ x='xyz.2.3.4.fc15.i686'
bash-4.2$ echo "${x:12:2}"
15
或者,如果你想它的正則表達式,類似於another answer但沒有外部工具(此時bash
只):
sed
bash-4.2$ x='xyz.2.3.4.fc15.i686'
bash-4.2$ [[ "$x" =~ fc(.+)\.i686 ]]
bash-4.2$ echo "${BASH_REMATCH[1]}"
15
0
方式一:
echo $x | sed 's/.*fc\([0-9]*\)\.i686/\1/'
1
,可以用[在bash提取子]的awk
[jaypal:~/Temp] awk -F. '{print substr ($5,3,2)}' <<< x=xyz.2.3.4.fc15.i686
15
相關問題
- 1. 使用bash shell腳本在2個字符串之間提取字符串
- 2. shell腳本與另一個字符串
- 3. shell腳本grep grep一個字符串
- 4. 如何在bash shell腳本變量中查找子字符串
- 5. 在bash shell腳本我怎麼一個字符串轉換爲一個數
- 6. 比較在bash shell腳本,兩個字符串變量
- 7. 提取字符串的前兩個字符(Shell腳本)
- 8. 處理從一個字符串數組通配符擴展在bash shell腳本
- 9. 提取shell腳本一個特定的字符串
- 10. Bash shell腳本 - 拆分字符串包括分隔符?
- 11. shell腳本連接兩個字符串
- 12. 在shell腳本中獲取子字符串
- 13. 從C shell腳本中的變量中提取子字符串?
- 14. Bash/Shell腳本
- 15. shell腳本BASH
- 16. Bash shell腳本
- 17. 一個字符串替換shell腳本中的字符串特殊字符
- 18. 從shell腳本返回恰好一個字符串/值
- 19. 如何判斷一個字符串是否未在bash shell腳本中定義?
- 20. bash腳本ssh到一個盒子,讓我到一個python shell
- 21. 分隔字符串,bash shell
- 22. 將BASH腳本白體字符中的提取子字符串視爲數字
- 23. 在bash shell腳本轉換字符串浮點數不BC
- 24. bash腳本基本字符串比較
- 25. shell腳本:如何削減一個字符串的一部分
- 26. bash腳本來連接字符串,並使用bash腳本
- 27. 抓住一個字符串
- 28. 抓住一個字符串
- 29. 查找字符串的子串在shell腳本
- 30. Shell:通過子串對字符串進行分組的腳本
可能重複(http://stackoverflow.com/問題/ 428109 /提取子串合的bash) – 2013-05-30 14:58:57