说我有... string='第一/第二/第三'
如何仅使用纯 bash(不是 awk/sed 等)并在 1 行中从字符串中提取“second”?
我知道我可以做 ${string#*/} 来获得“第二个/第三个”,但只是“第二个”呢
谢谢!
最佳答案
你可以这样做:
#!/bin/env bash
STRING="first/second/third"
TEXT=$STRING
TEXT=${TEXT#*/}
TEXT=${TEXT%/*}
echo $TEXT
Bash 还支持 regex
。这在这里以及其他有更复杂需求的地方很有用。对于您的用例,您可以轻松匹配每个部分并提取它。
#!/bin/env bash
STRING="first/second/third"
[[ $STRING =~ ^([^/]*)/([^/]*)/([^/]*)$ ]] && echo matched
echo [1] ${BASH_REMATCH[1]}
echo [2] ${BASH_REMATCH[2]}
echo [3] ${BASH_REMATCH[3]}
关于linux - 用纯 bash 提取字符串中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35049938/