grep -v文件中的多个字符串

时间:2013-08-06 15:31:47

标签: bash shell ksh

我有2个文件:

  1. 文件1
  2. 字符串列表:

    ben
    john
    eric
    
    1. file2的
    2. 几行:

       ben when to school
       my mother went out
       the dog is big
       john has FB
       eric is nice guy
      

      expoted file:

      my mother went out
      the dog is big
      

      我想使用grep -v并从列表中删除包含字符串的行。

      这是想法,但错误的命令:

      grep -v `cat file2` file1 > out
      

      由于

      阿萨夫

2 个答案:

答案 0 :(得分:7)

将文件用于模式:

grep -v -f "file2" file1 > out

或者你可以这样做:

grep -v -e "string1" -e "string2" file1

答案 1 :(得分:1)

如果我正确理解了这个问题,应该逐个删除4个匹配的行,除非你定义一个包含这4行的REGEXP,否则单个grep不能这样做,这很棘手

但是这个脚本应该这样做

cp file2 out
cat file1 | while read STR ; do
    LINE="`grep \"$STR\" file2`"
    sed -i "/^$LINE\$/d" out
done

cat out