簡體   English   中英

在bash中的sed中循環遍歷數組

[英]loop over array in sed in bash

我有一個包含動物的名稱的線長列表(〜100線),在那里他們被發現並命名時spottings 前3行可能是這樣的:

cat 1999 madagascar 
dog 1827 peru 
kangaroo 1995 new zealand
cat 1827 england

現在我想,以配合另一列表列表want是這樣的:

cat
dog
kangaroo

但是,我只想獲得也匹配給定year匹配給定location 例如,在1827england我這樣做是這樣的:

cat spottings | grep -i -f want | sed '/1827/I!d;/england/Id'

現在,如果我的yearlocation位於這樣的字符串中:

want="1827,1999,2013" # year
nonotwant="england,madagascar,peru" # location

做成這樣的數組:

want=($(echo ${want} | tr ',' '\n'))

如果我要檢查是否wantdonotwant want所有元素,它將是這樣的:

sed spottings | grep -i -f want | sed '/1827/I!d;/1999/I!d;/2013/I!d;/england/Id;/madagascar/Id;/peru/Id'

如何檢查兩個數組中的所有元素?

為什么不

fgrep -i -f want spottings | fgrep -i -f WantYear | fgrep -v -f NotWantLocation

其中wantWantYearNotWantLocation是每行1條條件的文件。

暫無
暫無

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

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