如何在sed shell命令中使用数组?

时间:2016-07-27 17:13:45

标签: linux bash shell command-line sed

我正在尝试列出名称:

list = a, b, c, d, e
sed "/$list/d" output_file.txt

以便包含那些变量a,b,c,d,e的行将从output_file中排除

任何人请帮助

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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