У меня есть файл с 5 цифровыми номерами. Как показано ниже
Строка 1 - 6 rahul Строка 2 - 4 anil Строка 3 - 8 ravi Строка 4 - 9 sagar Строка 5 - 3 pravin
Здесь, если я использую grep '8 \ | 9 \ | 2 'file> file1.txt Он будет перенаправлять только совпадающую запись, т.е. строки 4 - 9 sagar. Строка 5 - 3. Правин. Только для file1.txt. Но здесь я хочу: «2 - эта запись недоступна из ваших строк поиска» Массаж от команды grep
Вы можете сделать это (несколько неэффективно), используя grep
внутри цикла оболочки. Учитывая
$ 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