查找每个单词,否则应该出现来自 grep 的消息

查找每个单词,否则应该出现来自 grep 的消息

我有一个包含 5 个数字的文件。如下所示

Line 1 - 6 rahul
Line 2 - 4 anil 
Line 3 - 8 ravi
Line 4 - 9 sagar
Line 5 - 3 pravin

如果我使用它,grep '8\|9\|2' file >file1.txt 它将仅重定向匹配的记录,即

Line 4 - 9 sagar
Line 5 - 3 pravin 

仅限 file1.txt。但在这里我想要2 -- this record is not available from your searching strings来自 grep 命令的消息。

答案1

grep你可以在 shell 循环中完成这个操作(虽然效率有些低) 。假设

$ cat file1.txt
6 rahul
4 anil
8 ravi
9 sagar
3 pravin

然后

$ for k in 8 9 2; do grep -q "$k" file1.txt || echo "$k not in file"; done
2 not in file

或者,你可以使用以下命令执行此类操作awk

$ printf '8\n9\n2\n' | awk '
    NR==FNR{a[$1]++; next} 
    {delete a[$1]} 
    END{for (k in a) print k " not in " FILENAME}
  ' - file1.txt
2 not in file1.txt

相关内容