簡體   English   中英

Bash讀取文件名並使用awk返回版本號

[英]Bash read filename and return version number with awk

我正在嘗試使用Bash的一兩行(可以在命令行中運行)來讀取文件夾名稱並返回名稱內的版本。

因此,如果我擁有myfolder_v1.0.13我知道可以使用echo "myfolder_v1.0.13" | awk -F"v" '{ print $2 }' echo "myfolder_v1.0.13" | awk -F"v" '{ print $2 }' ,它將返回1.0.13

但是,如何使用awk命令使外殼讀取文件夾名稱和管道,以在不使用echo情況下提供相同的結果? 我想我總是可以導航到該目錄並將pwd的輸出以某種方式轉換為變量?

提前致謝。

編輯:一問到我就想通了。 我可以用

result=${PWD##*/}; echo $result | awk -F"v" '{ print $2 }'

它給了我我想要的 我將把這個問題留給他人參考,除非有人要我把它取下來。

但是您根本不需要Awk ,只需使用bash參數擴展即可。

string="myfolder_v1.0.13"
printf "%s\n" "${string##*v}"
1.0.13

您可以使用

basename "$(cd "foldername" ; pwd )" | awk -Fv '{print $2}'

以獲得外殼程序的目錄名稱,但是如果您確實要使用外殼程序,則還可以完全避免使用awk:假設您在參數“ FOLDERNAME”中具有版本號的文件夾的路徑:

echo "${FOLDERNAME##*v}"

這將刪除與參數FOLDERNAME的值中的全局表達式“ * v”匹配的最長前綴。

暫無
暫無

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

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