![](/img/trans.png)
[英]Using awk to calculate and print the average of values obtained via regular expression
[英]Filter a list of folders obtained via ls using a regex expression
我有一個ls
命令,它給我一個文件夾basename
的列表,如下所示:
INPUT:
bash$ ls -d /nfs_archivedbuilds/build/mx/${VERSION_NAME}/${OPERATING_SYSTEM}/* | xargs -n1 basename
OUTPUT:
4750070-190311-0913-3603182
4761979-190319-SHELVE-3617880
4763232-190319-2049-3618496
4763232-190320-SHELVE-3619115
4764259-190320-1402-3619606
4764259-190320-cifx-6274238
4764339-190320-2049-3620637
4764339-190320-SHELVE-3620115
4764339-190320-cifx-6274274
這些文件夾的順序是從最早的(第一個結果)到最新的(最后的結果)。
我有一個適當的邏輯,首先檢查最新的邏輯:如果良好(我對文件夾的內容進行了一些檢查),我想保留它,否則我想分析第二個新的(依此類推)。
為了做到這一點,我首先得到tail -1
:
SETUPS_CONTROL=1
MY_SETUP=$(ls -d /nfs_archivedbuilds/build/mx/${VERSION_NAME}/${OPERATING_SYSTEM}/* | xargs -n1 basename | tail -${SETUPS_CONTROL})
... doing some stuff to check
...如果最終結果不好,我增加SETUPS_CONTROL
並再次獲得MY_SETUP
,這次的尾巴為+1
。
我想保持相同的邏輯,但是能夠在我的ls
命令中過濾掉每個不僅僅由數字組成的文件夾。 例如:
4750070-190311-0913-3603182
對我來說是好的,因為它只是數字和破折號 4761979-190319-SHELVE-3617880
對我4761979-190319-SHELVE-3617880
,因為它包含一個單詞( SHELVE
),並且不僅由數字和破折號組成。 當前,當我應用循環來確定它是否好時,我被迫對獲得的每個結果進行正則表達式以確定它是否好:
if [[ ${MY_SETUP} =~ "^[0-9-]+$" ]]
then
#my setup might be good
else
#my setup is not good already, no need to further my checks
fi
這可以正常工作,但是我想知道是否不能直接在ls
命令中過濾列表而不是獲取任何內容,並且不得不循環以了解它是否好。
我試圖將grep "my regex expression"
傳遞到命令中:
ls -d /nfs_archivedbuilds/build/mx/${VERSION_NAME}/${OPERATING_SYSTEM}/* | xargs -n1 basename | grep "^[0-9-]+$"
...但返回空結果。 與單引號相同:
ls -d /nfs_archivedbuilds/build/mx/${VERSION_NAME}/${OPERATING_SYSTEM}/* | xargs -n1 basename | grep '^[0-9-]+$'
誰能幫忙嗎?
使用正則表達式執行grep時缺少-E
,請添加grep -E
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.