給定的
DIRNAME_MAIN="/home/vMX-ENV/vMX-21.1R1/"
我只想21.1R1從上面的目錄中顯示,有什么辦法只能在home/vMX-ENV/vMX-?? 并洗掉/最后的,而不是21.1R1/它最終會成為:21.1R1?
謝謝!
uj5u.com熱心網友回復:
Bash 有相當多的內置機制來操作變數的值。當前問題特別令人感興趣的是引數擴展形式,這些形式洗掉了與指定 shell 模式匹配的前綴或后綴。例如:
# Remove any trailing slash and store the result in DIRNAME_NORM
DIRNAME_NORM=${DIRNAME_MAIN%/}
# Emit the value of $DIRNAME_NORM, less the longest prefix matching shell
# pattern *vMX-
echo "${DIRNAME_NORM##*vMX-}"
對于這種情況,無需依賴外部程式。
uj5u.com熱心網友回復:
使用sed分組和反向參考
$ sed 's/[^0-9]*\([^/]*\).*/\1/' input_file
21.1R1
/[^0-9]*- 排除下一次出現數字字符之前的任何內容。由于這部分不在()要分組的括號內,因此將被排除在外。
\([^/]*\)- 這將從第一個數字到下一個/斜線出現的所有內容進行分組。
.*/ - 排除其他一切
\1- 回傳帶有反向參考的組\1。
awk 也可以使用。
$ awk -F"[/-]" '{print $6}' input_file
21.1R1
-F"[/-]"-設定分隔符/和-然后列印6列將包含字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383848.html
上一篇:Bash-僅當輸出為終端時
