删除字符串中的某些行?贝壳

时间:2016-03-25 22:39:02

标签: shell

假设我有一个包含以下字符串的变量(由空格分隔但在回显时看起来像是行):

animal:whale
animal:dog
animal:2_mice
animal:cat

我还有另一个变量,其中包含我要从第一个字符串中删除的动物名称。

让我们说names="cat dog"

如何从第一个字符串中删除包含cat and dog的行?

我已经尝试查找sed和grep方法,但还没有找到任何可用的信息。

我还应该指出表达式需要完全匹配,所以如果第二个变量只包含ca而不是cat,那么cat不应该被删除。

2 个答案:

答案 0 :(得分:1)

echo "$variable" | grep -Ev ":($(echo "$names" | sed 's/ /|/g'))$" 

答案 1 :(得分:0)

使用grep反向搜索,假设names变量中的值是空格分隔的,每个都有一个单词:

private static void test(List<? extends List<? extends Person>> listOfLists){
    for(List<? extends Person> list : listOfLists){