鑑於殼牌下面的數組編程陣列上使用grep找話
富=(SPI SPID蜘蛛蜘蛛俠吧lospia)
我想用grep來搜索所有詞SPI SPI蜘蛛蜘蛛俠lospia
0:它具有3個字母spi
正確的輸出陣列中的
我已經試過這樣的事情
foo=(spi spid spider spiderman) grep "spi" foo
但現在看來,這是錯的,什麼是去做正確的方法???
鑑於殼牌下面的數組編程陣列上使用grep找話
富=(SPI SPID蜘蛛蜘蛛俠吧lospia)
我想用grep來搜索所有詞SPI SPI蜘蛛蜘蛛俠lospia
0:它具有3個字母spi
正確的輸出陣列中的
我已經試過這樣的事情
foo=(spi spid spider spiderman) grep "spi" foo
但現在看來,這是錯的,什麼是去做正確的方法???
下面將打印出包含SPI所有詞:
foo=(spi spid spider spiderman bar)
for i in ${foo[*]}
do
echo $i | grep "spi"
done
最簡單的解決辦法是將管陣列元件到的grep:
printf -- '%s\n' "${foo[@]}" | grep spi
有兩點要注意:
printf是bash內建的,你可以用man printf
來查找它。 --
選項告訴printf,後面的任何內容都不是命令行選項。這可以防止foo
數組中的字符串被解釋爲這樣。
"${foo[@]}"
的表示法將數組的所有元素作爲獨立參數展開。總體而言,數組中的單詞被放入一個多行字符串中,並被傳送到grep中,該單詞匹配spi。
IFS=$'\n' ; echo "${foo[*]}" | grep spi
這將產生輸出:
spi
spid
spider
spiderman
lospia