[英]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.