簡體   English   中英

如何使用sed在命令行中提取單個值?

[英]How can I use sed to extract a single value in command line?

我試圖從Travis-CI配置中的環境變量中提取信息,所以我正在尋找一個1行linux命令,該命令將基於我的正則表達式執行此操作。 這是我正在嘗試的:

  - MAJOR_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1/g' <<< ${TRAVIS_TAG}`
  - MINOR_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1.$2/g' <<< ${TRAVIS_TAG}`
  - PATCH_VERSION=`sed -i 's/[v?]((([\d]+)\.[\d]+)\.[\d]+)/$1.$2.$./g' <<< ${TRAVIS_TAG}`

sed似乎需要一個或多個文件,因為我得到了sed: no input files錯誤sed: no input files ,不是字符串。 我如何獲得期望的字符串?

我的目標是獲取語義版本標簽(例如v12.34.5612.34.56並提取版本號。

目前尚不清楚為什么要使用sed。 如果TRAVIS_TAG只包含格式為“ xx.xx.xx”的字符串,那么您只需閱讀一下即可:

IFS=. read MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "$TRAVIS_TAG"

如果您擔心要舍棄的前導v ,請執行以下操作:

IFS=. read MAJOR_VERSION MINOR_VERSION PATCH_VERSION <<< "${TRAVIS_TAG#v}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM