我有一个包含 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