假設你有一個文本文件行,說list.txt
,像這樣:如何篩選與過濾器鏈
# Category 1
foobar
# Category 2
dummy1
dummy2
dummy3
# Category 3
foobar.dummy
foobar.dummy
和你有一個bash腳本,比如說,list.sh
,從list.txt
提取線。該腳本採用一種或多種模式來用grep過濾文本文件。從概念上講,它會是這樣的,從命令行:
cat list.txt | grep filter1 | grep fitler1 | ... | grep filtern
然而,問題是,過濾器的數量而變化,所以,你必須使用一個循環做過濾。對於循環,我希望像下面這樣的工作。
filters=$*
for filter in ${filters[@]}; do
result=`ad_hoc_show $result | grep $filter`
done
ad_hoc_show $result # should maintain original line structure
例如,以下是期望的輸出。
$ list.sh foobar
foobar
foobar.dummy
foobar.dummy
$ list.sh dummy \d
dummy1
dummy2
dummy3
那麼,關於如何實現ad_hoc_show
函數的任何建議?
'過濾器= $ *'沒有給你一個數組,並用空格混淆參數。不要這樣做。只需在'$ @「中使用'for filter; (甚至只是「過濾器;做」)循環所有參數。 – 2014-11-05 19:09:10