Можно ли представить какое-либо слово или массаж для вывода grep (которое недоступно при поиске условий ИЛИ)

У меня есть файл с 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

1
задан 28 June 2019 в 20:28

1 ответ

Вы можете сделать это (несколько неэффективно), используя 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
0
ответ дан 28 June 2019 в 20:28

Другие вопросы по тегам:

Похожие вопросы: