我有以下輸出:
junos-vmx-x86-64-21.1R1.11.qcow2 metadata-usb-fpc0.img metadata-usb-fpc10.img
metadata-usb-fpc11.img metadata-usb-fpc1.img metadata-usb-fpc2.img metadata-usb-fpc3.img
metadata-usb-fpc4.img metadata-usb-fpc5.img metadata-usb-fpc6.img metadata-usb-fpc7.img
metadata-usb-fpc8.img metadata-usb-fpc9.img metadata-usb-re0.img metadata-usb-re1.img
metadata-usb-re.img metadata-usb-service-pic-10g.img metadata-usb-service-pic-2g.img
metadata-usb-service-pic-4g.img vFPC-20210211.img vmxhdd.img
輸出來自以下腳本:
images_fld=$(for i in $(ls "$DIRNAME_IMG"); do echo ${i%%/}; done)
先前的輸出保存在一個名為 images_fld=
問題:
我需要提取的價值觀junos-vmx-x86-64-21.1R1.11.qcow2
vFPC-20210211.img和vmxhdd.img我平均值我的意思是整個單詞
問題是這個包含所有檔案的目錄總是在更新,新檔案不斷添加,這意味著我不能依賴行號 ($N) 來提取這些檔案的名稱。
我正在嘗試使用awk或sed實作這一目標
有沒有辦法:
匹配所有以 結尾的檔案
.qcow2,然后提取完整的檔案名?喜歡:junos-vmx-x86-64-21.1R1.11.qcow2匹配所有以 開頭的檔案
vFPC,然后提取完整的檔案名?喜歡:vFPC-20210211.img匹配所有以 開頭的檔案
vmxhdd,然后提取完整的檔案名?喜歡:vmxhdd.img
我正在使用這些模式,因為這些檔案名往往會根據我部署的每個版本更改名稱。但是像: .qcow2or vFPCor 之類的模式vmxhdd無論如何都保持不變,因此我只需要通過匹配部分模式來提取完整??的字串。是否可以?謝謝!
注意:我不能依賴以 結尾的檔案,.img因為它們太多了,因此提取特定檔案名會變得更加困難:/
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed -nE '/\<\S \.qcow2\>|\<(vFPC|vmxhdd)\S \>/{s//\n&\n/;s/[^\n]*\n//;P;D}' file
如果字串與所需條件匹配,則用換行符分隔它。
洗掉直到并包括第一個換行符。
列印/洗掉第一行并重復。
uj5u.com熱心網友回復:
感謝KamilCuk我能夠解決這個問題。謝謝!對于將來可能需要此功能的任何人,不要使用sed或awk解決方案是使用tail.
echo $images_fld | tail -f | tr ' ' '\n' | grep '\.qcow2$\|vFPC\|vmxhdd')
基本上,我遇到的問題只是提取以 .qcow2 | 結尾的檔案的名稱。并從 vFPC 和 vmxhdd 開始
謝謝KamilCuk
potong給出的另一個解決方案是使用
echo $images_fld sed -nE '/\<\S \.qcow2\>|\<(vFPC|vmxhdd)\S \>/{s//\n&\n/;s/[^\n]*\n//;P;D}'
這給出了與 KamilCuk 相同的輸出!謝謝兩位
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/379665.html
上一篇:如何在一個專案中混合使用CloudRun和AppEngine部署?
下一篇:切割Apache虛擬主機塊
