Saya memiliki beberapa file teks besar dan dalam file UNIQS.txt
saya memiliki daftar string grep
dari file lain. Kode yang saya gunakan adalah
grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
yang tidak melakukan apa-apa - file yang dihasilkan kosong. Tetapi ketika saya melakukannya
grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam
ini bekerja dengan benar. Ini membingungkan saya karena saya tidak berpikir grep
akan menafsirkan entri UNIQS.txt
sebagai pola regexp tanpa tanda kutip dan garis miring dan seterusnya berada di file (yang tidak ada). Apakah ini terjadi secara umum bahwa jika Anda mendapatkan pola dari file maka secara otomatis akan berpikir bahwa mereka adalah pola regexp?
Sunting: Di UNIQS.txt
file, ada string yang dipisahkan baris baru dari formulir
HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783
(disebut nama templat) dan EEP_VSL...
tab file dipisahkan kolom, dengan sekitar 14 kolom dan kolom pertama adalah nama templat, jadi pada dasarnya saya ingin mengekstrak baris yang sesuai dengan setiap templat dalam file.
-x
-F
tanda. Tebakan saya adalah-
pada baris contoh di atas menyebabkan ini dibaca sebagai urutan karakter? Bukankah itu membutuhkan tanda kurung siku juga? Saya sudah menguji dengan beberapa file sampel tetapi belum sampai pada kesimpulan.-F
. Itu akan membuat perbedaan dengan karakter seperti\[*^$
.-F
tanda?Saya memiliki kesalahan yang sama, tidak diselesaikan dengan jawaban yang bagus dari @gilles. Melihat lebih dekat pada file input, saya menemukan 2 baris baru di akhir. Tanpa ini, sukses, hanya diperlukan: grep -i file_pattern_input file
(GNU grep 3.1, Input file lebih dari 5000 catatan, file pencocokan / pola 2536, saya tahu semua 2536 harus ada dalam file. Dengan baris baru mendapatkan semua baris file dan tanpa hanya baris pencocokan 2536)
sumber