วิธีการระงับผลการจับคู่ไฟล์ไบนารีใน grep [ปิด]


215

เมื่อใช้grepใน linux ผลลัพธ์มักจะมี "ไฟล์ไบนารี XXX ตรงกัน" ซึ่งฉันไม่สนใจ จะระงับส่วนนี้ของผลลัพธ์ได้อย่างไรหรือจะแยกไบนารีไฟล์เป็น grep ได้อย่างไร


12
grep -I .........

1
@skwllsp แต่ด้วย -l ผลลัพธ์จะไม่มีบรรทัดที่จับคู่เฉพาะกับชื่อไฟล์ที่ตรงกัน
RandyTek

มีตัวเลือกสำหรับบรรทัดคือ: grep -I -n -H

6
นี่เป็นหัวข้อไหม ว้าว
CoffeeTableEspresso

คำตอบ:


302

มีสามตัวเลือกที่คุณสามารถใช้ได้ -Iคือการยกเว้นไฟล์ไบนารีใน grep อื่น ๆ ใช้สำหรับหมายเลขบรรทัดและชื่อไฟล์

grep -I -n -H 


-I -- process a binary file as if it did not contain matching data; 
-n -- prefix each line of output with the 1-based line number within its input file
-H -- print the file name for each match

ดังนั้นนี่อาจเป็นวิธีเรียกใช้ grep:

grep -InH your-word *

งานนี้ ขอบคุณ @skwllsp
RandyTek

7
ฉันจะใช้-Irnที่rย่อมาจาก recursive เพื่อดูภายในโฟลเดอร์ทั้งหมด Hexsessive ที่นี่
vladkras

@vladkras, "H กำลัง exsessive ที่นี่" - คุณหมายถึงซ้ำซ้อนนั่นคือค่าเริ่มต้นแล้วหรือยัง
cp.engr

ขอบคุณสำหรับการชี้แจงว่าตัวเลือกสั้น ๆ มีความหมายอย่างไรในคำตอบของคุณ มีคำสั่ง tux linux มากมายบนคำตอบดังนั้นจึงไม่มีคำอธิบายซึ่งฉันคิดว่าน่ารำคาญ
jrahhali

1
@AaronFranke: -nธงบอก grep เพื่อรายงานหมายเลขบรรทัดของไฟล์ที่พบการแข่งขัน "ตาม 1" หมายความว่าการนับบรรทัดเริ่มต้นจากหนึ่งมากกว่าศูนย์เช่นมักจะทำในการเขียนโปรแกรม ดังนั้นถ้าบรรทัดแรกของไฟล์ของคุณชื่อexample.txtเป็นHello, worldบรรทัดที่สองเป็นHello catและบรรทัดที่สามเป็นcats are coolแล้วค้นหาคำว่า "แมว" ผ่านgrep -n cat example.txtคุณจะได้รับและexample.txt:2: Hello cat example.txt:3: cats are cool
jvriesem

11

นี่เป็นคำถามเก่าและถูกตอบแล้ว แต่ฉันคิดว่าฉันใส่ตัวเลือก --binary-files = text ไว้ที่นี่สำหรับทุกคนที่ต้องการใช้มัน ตัวเลือก -I ละเว้นไฟล์ไบนารี แต่หากคุณต้องการให้ grep ปฏิบัติกับไฟล์ไบนารีเป็นการใช้ไฟล์ข้อความ --binary-files = text ดังนี้:

bash$ grep -i reset mediaLog*
Binary file mediaLog_dc1.txt matches
bash$ grep --binary-files=text -i reset mediaLog*
mediaLog_dc1.txt:2016-06-29 15:46:02,470 - Media [uploadChunk  ,315] - ERROR - ('Connection aborted.', error(104, 'Connection reset by peer'))
mediaLog_dc1.txt:ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
bash$
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.