2016-07-27 86 views

回答

4

隨着GNU的grep:

list=(a b c d e) 
(IFS="|"; grep -vE "(${list[*]})" file) 

或GNU sed的:

list=(a b c d e) 
(IFS="|"; sed -E "/(${list[*]})/d" file) 
+0

它看起來像在終端上顯示當我運行該腳本是正確的輸出,但後來當我打開文件我用我的代碼與這一個單獨生成它仍然不排除列表 – Edccccch

+0

試試這個:'list =(abcde); (IFS =「|」; grep -vE「($ {list [*]})」input_file> output_file)' – Cyrus

2

您可以使用BASH陣列產生與管(交替)一個正則表達式:

list=(a b c d e) # original array 

printf -v re "%s|" "${list[@]}" # genera a regex delimited by | 

sed -E "/${re%|}/d" file # use sed on this regex 
+0

要保存'sed'的內嵌內容,請使用:'sed -E -i.bak「/ $ {re %|}/d「文件」 – anubhava