У меня есть несколько больших текстовых файлов, и в файле у UNIQS.txt
меня есть список строк grep
из другого файла. Код, который я использую
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
который ничего не делает - сгенерированный файл пуст. Но когда я сделаю
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
это работает правильно. Это смущает меня, потому что я не думал, grep
что интерпретировал бы записи UNIQS.txt
как шаблоны регулярных выражений без кавычек и слэшей и так далее, находящиеся в файле (чего нет). В общем случае, если вы получаете шаблоны из файла, он автоматически будет думать, что они являются шаблонами регулярных выражений?
Редактировать: В UNIQS.txt
файле есть строки, разделенные символом новой строки
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(называемые именами шаблонов) и EEP_VSL...
разделенные табуляцией столбцы с примерно 14 столбцами, а первый столбец - это имя шаблона, поэтому в основном я хочу извлечь строку, соответствующую каждому шаблону в файле.
-x
-F
флага. Я думаю, что-
в приведенной выше строке образца это будет читаться как последовательность символов? Разве это не потребует квадратных скобок тоже? Я протестировал с некоторыми примерами файлов, но не пришел к выводу.-F
. Это будет иметь значение с такими персонажами, как\[*^$
.-F
флага?У меня была та же ошибка, не решенная с хорошим ответом от @gilles. Присмотревшись ближе во входном файле, я нашел 2 символа новой строки в конце. Без этого успеха нужно только: grep -i file_pattern_input file
(GNU grep 3.1, входной файл более 5000 записей, файл сопоставления / шаблон 2536, я знал, что все 2536 должны быть в файле. С помощью новой строки были получены все строки файла и без только 2536 совпадающих строк)
источник