Berikan parameter untuk perintah grep

0

Saya ingin menemukan beberapa kata dari file. Saya menggunakan perintah grep di linux.

grep "word1" original.file

Tetapi ada banyak kata untuk ditemukan dan mereka berada di "words.file" Jika mungkin saya ingin memberikan parameter ke perintah grep. Saya akan memberikan kata-kata yang ada di "words.file" ke perintah grep sebagai parameter dan menemukan kata-kata ini di "original.file"

Bisakah saya melakukan itu?


sumber
bagaimana kata-kata dalam kata-kata Anda. file disimpan? satu per baris atau dengan beberapa karakter dipisahkan? Jika satu kata per baris, solusi thiton harus bekerja. alangkah baiknya jika Anda menaruh beberapa sampel data di sini.
Ya itu adalah satu kata per baris sehingga solusi
maka mungkin Anda bisa memilih solusi thiton sebagai jawaban? Saya perhatikan bahwa Anda telah mengajukan 5 pertanyaan sejauh ini, dan tanpa satu pun jawaban yang diterima?
Saya menjawab, "Apakah posting ini bermanfaat bagi Anda?" pertanyaan untuk "Ya" Saya tidak tahu apa lagi yang harus saya lakukan
"Ketika Anda telah memutuskan jawaban mana yang paling membantu Anda, tandai sebagai jawaban yang diterima dengan mengklik kotak centang di sebelah kiri jawaban." stackoverflow.com/faq#howtoask
Burhan Ali

Jawaban:

5

man grep membantu Anda: grep memiliki parameter -f, yang menentukan bahwa pola harus dibaca dari file.

grep -f words.file original.file

Namun, ingatlah bahwa kata-kata dalam kata-kata. File harus satu per baris, tetapi tr '' '\ n' membantu Anda dengan itu.

thiton
sumber
2

Mencoba

grep -e word1 -e word2 -e word3 original.file

Jika Anda ingin membangun hal- -e wordhal dari words.filecoba

eval $(echo -n 'grep '; while read word; do echo -n "-e '$word' "; done < words.file; echo 'original.file')

Mungkin lebih mudah dan lebih baik (tetapi satu proses grep per kata):

xargs -I '{}' grep -e '{}' original.file < words.file
Johannes Weiss
sumber
2
Meskipun ini adalah pengantar yang bagus untuk shell-looping, Anda mungkin ingin tahu tentang grep -f :-)
thiton