В то время как цикл чтения с grep

У меня есть файл csv со многими строками, и мне нужно найти некоторые совпадения и вывести их в файл. Мои данные:

Файл 1

qwerty asdfgh zxcvbn qwerty aassdd zzxxcc yyuuii tttttt 

Мне нужно сопоставить:

Файл 2

 qwert tttttt aassdd. 

Поскольку мой файл большой, и мой список для соответствия длинный, я делаю это:

 while read n ; do grep $n File_1.csv >> results.csv ; done < File_2.csv 

Я не могу получить результат, который хотел. Пожалуйста помоги!

3 Solutions collect form web for “В то время как цикл чтения с grep”

Вам не нужно зацикливаться; параметр -f принимает файл с шаблонами для поиска:

 grep -Ff File_2.csv File_1.csv > results.csv 

Я также добавил параметр -F чтобы условия поиска обрабатывались буквально, а не как регулярное выражение.

Утилита grep может считывать шаблоны из одного файла и сопоставлять их с содержимым другого файла. Никакой цикл в оболочке не требуется.

 $ grep -f patterns file 

Используя два файла, которые у вас есть в вашем вопросе (файл 1 является file а файл 2 – patterns ), это создает

 qwerty qwerty tttttt 

Чтобы сопоставлять шаблоны с patterns как фиксированные строки (а не регулярные выражения), добавьте -F :

 $ grep -F -f patterns file 

В приведенном примере это дает тот же результат, что и без -F .

Согласование силы по полным линиям, добавьте -x :

 $ grep -x -F -f patterns file tttttt 

Поскольку qwerty не соответствует qwert полностью, эти строки не возвращаются.

Если в каждом файле нет дубликатов, вы можете сделать следующее:

 # In file_1 and file_2 sort file_1 file_2 | uniq -d # In file_1 or file_2 but not both sort file_1 file_2 | uniq -u # In file_1 and not file_2 sort file_1 file_2 | uniq -d | sort - file_1 | uniq -u # In file_2 and not file_1 sort file_1 file_2 | uniq -d | sort - file_2 | uniq -u 
  • Сценарий оболочки для фильтрации даты отдельно от конкретного столбца файла .csv и сохранения вывода в другом файле csv
  • GNU параллельна чрезмерно медленной
  • команда egrep, которая показывает всех авторов и субъектов почты, содержащихся в каталоге
  • Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?
  • Сравните два файла и напечатайте только первое слово строк, которые не совпадают со строкой
  • Поиск и замена полной строки в рекурсивных файлах
  • Исключение вложенных каталогов с помощью grep
  • Количество отсчетов подстроки в строке
  • Как выполнить команду в заданной строке в каждой строке файла?
  • объединение игнорирования grep и совпадений
  • Только список уникальных файлов на основе частичного имени файла
  • Linux и Unix - лучшая ОС в мире.