สมมติว่าฉันได้สร้างไฟล์ไบนารีต่อไปนี้แล้วพูดว่าฉันต้องการหาตำแหน่งของศูนย์ทั้งหมด (0x00) โดยใช้ไวยากรณ์แบบ grep สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือ: อย่างไรก็ตามนัยนี้แปลงไบต์แต่ละไฟล์ในไฟล์ไบนารีเดิมเป็นการแทน ASCII แบบหลายไบต์โดยที่ grep ทำงานไม่ตรงกับตัวอย่างที่ดีของการเพิ่มประสิทธิภาพ :) มีบางอย่างเช่น grep binary สำหรับ Linux อาจเป็นไปได้ว่ายังมีบางอย่างที่สนับสนุนไวยากรณ์การแสดงออกปกติเช่นเดียวกับอักขระไบต์นั่นคือฉันสามารถเขียนสิ่งต่างๆเช่น (x00) b และจับคู่ศูนย์หรือมากกว่าไบต์ 0 ระหว่างไบต์ (97) และ b (98) EDIT: บริบทคือ Im ทำงานกับไดร์เวอร์ที่ฉันจับข้อมูล 8 บิตเกิดข้อผิดพลาดในข้อมูลซึ่งอาจเป็นกิโลไบต์ได้ถึงเมกะไบต์และ Id ต้องการตรวจสอบลายเซ็นเฉพาะและสถานที่ที่พวกเขาอยู่ เกิดขึ้น (จนถึงขณะนี้ Im ทำงานกับตัวอย่างกิโลไบต์ดังนั้นการเพิ่มประสิทธิภาพจึงไม่สำคัญ แต่ถ้าฉันเริ่มมีข้อผิดพลาดในการจับภาพขนาดใหญ่ของเมกะไบต์และต้องวิเคราะห์ข้อมูลเหล่านี้การคาดเดาของฉันคือต้องการเพิ่มประสิทธิภาพมากขึ้น :) และโดยเฉพาะอย่างยิ่ง Id เช่นสิ่งที่ฉันสามารถ grep สำหรับไบต์เป็นตัวอักษร - hexdump บังคับให้ฉันเพื่อค้นหาสตริงต่อไบต์) EDIT3: ขอบคุณคำตอบโดย tchrist นี่เป็นตัวอย่างด้วย grepping และการจับคู่และแสดงผล (แม้ว่า ไม่เหมือนคำถาม OP): ให้ข้อมูลที่จับคู่ถูกจัดกลุ่มเป็นหนึ่งไบต์ (สองตัว hex) แต่ละตัวแล้ว H2 H2 H2 ต้องระบุเป็นไบต์จำนวนมากในสตริงที่ตรงกับการจับคู่ของฉัน 000xCC000 ครอบคลุม 17 ไบต์ฉันสามารถเขียน H2x17 ใน Perl แต่ละ H2 เหล่านี้จะส่งคืนตัวแปรที่แยกจากกัน (เช่นเดียวกับในรายการ) ดังนั้นการรวมกันจะต้องมีการใช้เพื่อเพิ่มช่องว่างระหว่างกันด้วยนั่นคือ: ดี แน่นอน Perl เป็นสถานที่ grepping binary ดีมากผมต้องยอมรับ :) ตราบเท่าที่หนึ่งเรียนรู้ไวยากรณ์ถูก :) ถามพฤศจิกายน 14 10 ที่ 22:31 หนึ่งจะใช้นี้เพื่อสตริงไบนารี arbitrary ฉันพยายามของคุณ perl-ln0777e 39 พิมพ์ pos () ในขณะที่ 47illegal47g39 47usr47bin47awk วิธีการค้นหาเนื้อหาที่สูญหายในไฟล์อุปกรณ์ดิบดิบ แต่ perl barfed ที่ฉันกับ quotOut ของ memoryquot partway ผ่าน ndash fuzzyTew 9 ธันวาคม 16 at 14:12 วิธีหนึ่งในการแก้ปัญหาของคุณโดยใช้ grep เพียงอย่างเดียวคือการสร้างไฟล์ที่มี byte null เดียว หลังจากนั้น grep - abo-f nullbytefile targetfile จะให้ผลลัพธ์ต่อไปนี้ นั่นคือแน่นอนแต่ละไบต์ชดเชยตามที่ร้องขอโดย - b ตามด้วยไบต์โมฆะตามที่ร้องขอโดย - o Id เป็นคนแรกที่สนับสนุน perl แต่ในกรณีนี้ theres ไม่จำเป็นต้องนำมาขยาย family. grep - Unix, Linux Command recurse ในไดเรกทอรีข้ามไฟล์ที่ตรงกับรูปแบบ ยกเลิกข้อความแสดงข้อผิดพลาดเกี่ยวกับไฟล์ที่ไม่มีอยู่หรือไม่สามารถอ่านได้ บันทึกการพกพา: ไม่เหมือน GNU grep grep แบบดั้งเดิมไม่สอดคล้องกับ POSIX.2 เนื่องจาก grep แบบดั้งเดิมไม่มีตัวเลือก - q และตัวเลือกของ s ทำตัวเหมือน GNU grep rsquos-q ตัวเลือก สคริปต์เชลล์ที่ตั้งใจจะพกพาไปยัง grep แบบดั้งเดิมควรหลีกเลี่ยงทั้ง - q และ - s และควรเปลี่ยนเส้นทางเอาท์พุทไปแทนที่แทน ถือว่าไฟล์เป็นไบนารี โดยค่าเริ่มต้นภายใต้ MS-DOS และ MS-Windows grep จะคาดเดาประเภทไฟล์โดยดูที่เนื้อหาของ 32KB แรกที่อ่านจากไฟล์ ถ้า grep ตัดสินใจว่าไฟล์เป็นไฟล์ข้อความจะเป็นการตัดอักขระ CR จากเนื้อหาของไฟล์ต้นฉบับ (เพื่อให้นิพจน์ปกติทำงานได้อย่างถูกต้อง) การระบุ - U จะตีความการคาดเดานี้ทำให้ไฟล์ทั้งหมดถูกอ่านและส่งผ่านไปยังกลไกการจับคู่คำต่อคำถ้าไฟล์เป็นไฟล์ข้อความที่มีคู่ CRLF ในตอนท้ายของแต่ละบรรทัดการทำเช่นนี้จะทำให้นิพจน์ปกติบางส่วนไม่ทำงาน ตัวเลือกนี้ไม่มีผลต่อแพลตฟอร์มอื่นที่ไม่ใช่ MS-DOS และ MS-Windows รายงานการชดเชยไบต์แบบ Unix สวิตช์นี้ทำให้ grep รายงานการชดเชยไบต์เหมือนกับไฟล์ข้อความในรูปแบบ Unix นั่นคือมีอักขระ CR ที่ถูกถอดออก นี้จะให้ผลลัพธ์เหมือนกับการเรียกใช้ grep บนเครื่อง Unix ตัวเลือกนี้ไม่มีผลใดนอกจากตัวเลือก - b นอกจากนี้ยังไม่มีผลกับแพลตฟอร์มอื่นที่ไม่ใช่ MS-DOS และ MS-Windows พิมพ์หมายเลขเวอร์ชันของ grep เป็นข้อผิดพลาดมาตรฐาน หมายเลขเวอร์ชันนี้ควรรวมอยู่ในรายงานข้อบกพร่องทั้งหมด (ดูด้านล่าง) เปลี่ยนการจับคู่เพื่อเลือกเส้นที่ไม่ตรงกัน เลือกเฉพาะบรรทัดที่มีคำที่ตรงกันซึ่งสร้างทั้งคำ การทดสอบคือสายอักขระการจับคู่ต้องเป็นจุดเริ่มต้นของบรรทัดหรือนำหน้าด้วยอักขระที่ไม่เป็นคำ ในทำนองเดียวกันจะต้องเป็นที่ท้ายบรรทัดหรือตามด้วยอักขระส่วนประกอบที่ไม่ใช่ตัวหนังสือ อักขระที่ประกอบด้วยคำเป็นตัวอักษรตัวเลขและขีดล่าง เลือกเฉพาะการจับคู่ที่ตรงกับทั้งบรรทัดเท่านั้น พ้องเลิกใช้แล้วสำหรับ - i ให้เอาต์พุต zero byte (อักขระ ASCII NUL) แทนอักขระที่ตามชื่อไฟล์ ตัวอย่างเช่น grep-lZ จะแสดงไบต์เป็นศูนย์หลังจากชื่อไฟล์แต่ละไฟล์แทนบรรทัดใหม่ที่ปกติ ตัวเลือกนี้จะทำให้เอาต์พุตไม่คลุมเครือแม้แต่ในที่ที่มีชื่อไฟล์ที่มีอักขระที่ผิดปกติเช่น newlines ตัวเลือกนี้สามารถใช้ได้กับคำสั่งเช่น find - print0 perl -0 sort - z และ xargs -0 เพื่อประมวลผลชื่อไฟล์โดยพลการแม้กระทั่งที่มีอักขระ newline เพื่อค้นหาสตริงที่ระบุในไฟล์เดียว test. sh cat test. sh binbash fun () echo นี่คือการทดสอบ สิ้นสุดสคริปต์เชลล์ของเราด้วยข้อความแสดงข้อผิดพลาดที่สำเร็จ 1 จากไฟล์ด้านบน grep exit: grep exit demofile เมื่อต้องการตรวจสอบสตริงที่ระบุในไฟล์หลายไฟล์: ในกรณีนี้ test. sh และ test1.sh cat test. sh binbash fun () echo นี่คือ ทดสอบ. สิ้นสุดสคริปต์เชลล์ของเราพร้อมกับข้อความแสดงความสำเร็จออก 1 cat test1.sh binbash fun () echo นี่เป็น test1 สิ้นสุดสคริปต์เชลล์ของเราด้วยข้อความแจ้งความสำเร็จ exit 0 grep exit ในไฟล์ทั้งสองไฟล์ test. sh และ test1.sh: test1.sh: exit 0 test. sh: exit 1 ในการค้นหาโดยใช้ case grep - i ให้เพิ่ม EXIT ใน cat test1.sh test1.sh binbash fun () echo นี่เป็น test1 สิ้นสุดสคริปต์เชลล์ของเราด้วยข้อความความสำเร็จ EXIT with 0 exit 0 grep exit test1.sh test1.sh: exit 0 grep - i ออก test test1.sh: ยกเลิกสคริปต์เชลล์ของเราด้วยข้อความความสำเร็จ EXIT with 0 test1.sh: exit 0 สองบรรทัดที่มี - i ตัวเลือกเป็นกรณีที่ insensitive. If คุณทราบนามสกุลหรือรูปแบบของไฟล์ที่คุณต้องการวิธีอื่นคือการใช้ - รวมตัวเลือก: คุณยังสามารถพูดถึงไฟล์ที่จะยกเว้นด้วย - ไม่รวม หากคุณค้นหารหัสผ่านบ่อย Ag (Silver Searcher) เป็นทางเลือกที่รวดเร็วกว่ามากสำหรับ grep ซึ่งสามารถกำหนดรหัสค้นหาได้ ตัวอย่างเช่น recursive ตามค่าเริ่มต้นและจะละเว้นไฟล์และไดเรกทอรีที่ระบุไว้ใน. gitignore โดยอัตโนมัติ ดังนั้นคุณจึงไม่ต้องผ่านตัวเลือกที่ไม่ยุ่งยากเหมือนกันไป grep หรือค้นหา ตอบ ธ. ค. 30 11 ที่ 22:59 น. ผมคิดว่าควรจะ a. ณ สิ้นไม่ ndash ราฟาเอล 21 มิถุนายน 21 ที่ 22:59 ใช้งานได้ดีกับ grep ที่มาพร้อมกับแอนดรอยด์ Cygwin แต่ไม่ได้มาพร้อมกับ AIX ndash ระงับ 31 ม. ค. 13 เวลา 20:08 น. ควรจะ --includes. txtquot ndash Krzysztof Wolny 18 ธันวาคม 13 เวลา 13:28 KrzysztofWolny: แทนการทำงานได้ดีบน Ubuntu PS: ที่ควรจะเป็นพื้นที่ backticked แต่ parser markdown SO ล้มเหลว ndash Dan Dascalescu 19 ก. พ. 14 เวลา 9:08 น. ในตัวเลือก --exec - สัญลักษณ์คือการอ้างอิงถึงชื่อไฟล์ที่พบในขณะนี้โดยการค้นหาเครื่องมือ (นั่นคือการทำสิ่งที่มีชื่อไฟล์ที่เราพบ) นอกจากนี้ตัวเลือก - exec ควรจะยกเลิกด้วยสัญลักษณ์ (เพื่อทำเครื่องหมายสิ้นสุดลงของคำสั่ง exec) แต่เนื่องจากนี่คือทั้งหมดที่ทำงานอยู่ในเชลล์ที่ควรหลีกเลี่ยงสัญลักษณ์ และสุดท้ายพิมพ์ตัวเลือกช่วยให้หาเครื่องมือในการพิมพ์ชื่อไฟล์ที่พบบนหน้าจอ ndash rook Apr 27 16 at 9:47 ag เป็นวิธีที่ชื่นชอบการทำเช่นนี้ในขณะนี้ githubggreerthesilversearcher โดยทั่วไปมันเป็นเช่นเดียวกับ ack แต่มีการเพิ่มประสิทธิภาพอีกสักหน่อย #: 3159 php filesystems best-practices User: n / a Comments for #: 3159 ที่ควรจะทำงาน: ตอบธันวาคม 19 13 ที่ 7:20 เพื่อหาชื่อของไฟล์ที่มีเส้นทาง recursively ที่มีการใช้สตริงโดยเฉพาะอย่างยิ่งด้านล่างคำสั่ง สำหรับ UNIX: หาไฟล์บนเซิร์ฟเวอร์ UNIX หาไฟล์บนเซิร์ฟเวอร์ LINUX ตอบ Jan 29 16 at 14:31 ถ้าคุณต้องการเพียงทำตามไดเรกทอรีจริงและไม่เชื่อมโยงสัญลักษณ์หากคุณต้องการตามลิงค์สัญลักษณ์เช่นเดียวกับไดเรกทอรีจริง ระวังการเรียกซ้ำ infinite) เนื่องจาก youre พยายามที่จะ grep recursively ตัวเลือกต่อไปนี้อาจเป็นประโยชน์กับคุณ: ดังนั้นถ้าคุณต้องการค้นหาไฟล์ทั้งหมดที่มี Darth Vader ในไดเร็กทอรีปัจจุบันหรือไดเร็กทอรีย่อยใด ๆ และจับชื่อไฟล์และหมายเลขบรรทัด, แต่ไม่ต้องการให้เกิดการเรียกซ้ำตามลิงก์สัญลักษณ์คำสั่งจะเป็นถ้าคุณต้องการค้นหาคำพูดทั้งหมดของ cat คำในไดเรกทอรีและ youre ปัจจุบันในไดเรกทอรีและคุณต้องการจับชื่อไฟล์ แต่ไม่บรรทัดหมายเลขของอินสแตนซ์ใด ๆ ของสตริง แมวและคุณต้องการเรียกซ้ำเพื่อทำตามลิงก์สัญลักษณ์ถ้าพบพวกเขาคุณสามารถเรียกใช้ grep ทำงานต่อไปนี้ - ช่วยแนะนำสั้น ๆ สำหรับการเชื่อมโยงสัญลักษณ์สำหรับทุกคนอ่านคำตอบนี้และสับสนโดยการอ้างอิงของฉันกับพวกเขา nixtutorfreebsdunderstanding - หากคุณกำลังมองหาเนื้อหาเฉพาะในไฟล์ทั้งหมดจากโครงสร้างไดเร็กทอรีคุณอาจใช้ find เพราะมันชัดเจนว่าคุณกำลังทำอะไรอยู่: โปรดสังเกตว่า - l (downcase of L) แสดงชื่อของไฟล์ที่มี ข้อความ. ลบออกถ้าคุณต้องการพิมพ์ตัวเองแทน หรือใช้ - H เพื่อรับไฟล์พร้อมกับการจับคู่ ทางเลือกอื่น ๆ ทั้งหมดคือ: โดยที่ n - พิมพ์หมายเลขบรรทัด ตอบพฤศจิกายน 30 15 เวลา 16:19 Up - โหวตให้เป็นเพียงวิธีการแก้ปัญหาหาทั้งหลีกเลี่ยงการใช้ xargs ที่ไม่จำเป็นและใช้แทนกับ - exec จึงหลีกเลี่ยงการเปิดตัวกระบวนการที่ไม่จำเป็นจำนวนมาก ในเซิร์ฟเวอร์ AIX ของไอบีเอ็ม (ระบบปฏิบัติการ: AIX 5.2) ให้ใช้: จะพิมพ์ชื่อ pathfile และหมายเลขบรรทัดญาติในไฟล์เช่น: 2865: คำอธิบาย stringYouWannaFind ต่อไปจะทำงานสำหรับฉัน ) ดีไม่มี xargs เป็นเฉพาะสำหรับการแปลงท่อของอาร์กิวเมนต์เพื่อ arglist แต่ใช่มันเป็นความจริงที่ xargs ที่ทันสมัยเมื่อใช้กับ - s andor-L สามารถจัดการกับ arglists ยาวมากโดยการทำลายลงในคำสั่งหลายคำร้อง แต่มัน isn กำหนดวิธีการนี้โดยค่าเริ่มต้น (และไม่ได้อยู่ในการตอบกลับข้างต้นใด ๆ ) ตัวอย่าง: หา - type f xargs - L 100 grep อะไรก็ได้ ndash m. thome Apr 23 15 at 13:56 แพลตฟอร์มใดที่ใช้ POSIX xargs ได้มาตรฐานเพื่อให้พฤติกรรมนี้ไม่อยู่ในกรอบ อรรถประโยชน์ xargs จะจำกัดความยาวของบรรทัดคำสั่งเช่นว่าเมื่อเรียกใช้บรรทัดคำสั่งอาร์กิวเมนต์รวมและรายการสภาพแวดล้อม ต้องไม่เกิน -2048 bytes. quot ndash tripleee 23 เม. ย. 23 เวลา 15:42 grep recursive
ผู้เริ่มต้นใช้งานได้ถึง 70 รายในแต่ละวันสามารถรับสิทธิได้ถึง 70 คะแนนพร้อมกับสัญญาณตัวเลือกไบนารีซึ่งจะหยุดชั่วคราวในช่วงเหตุการณ์ข่าวใหญ่ ๆ และความผันผวน สัญญาณระยะสั้นและระยะยาวเราสร้างสัญญาณการซื้อขายสำหรับระยะเวลา 5m, 10m และ 30m ที่หมดอายุ 100 สัญญาณต่อวัน (247 บริการ) รับคุ้มค่ากับเงิน 100 สัญญาณที่สร้างขึ้นทุกวัน 247 That8217s เพราะเราตรวจสอบ 10 คู่สกุลเงินที่แตกต่างกันเพื่อหาโอกาสการค้าสำหรับคุณ พัฒนาโดยผู้ค้าแบบมืออาชีพสัญญาณทั้งหมดของเราถูกสร้างขึ้นโดยใช้กลยุทธ์การซื้อขายแบบมืออาชีพที่ได้รับการตรวจสอบย้อนหลังนานกว่า 6 เดือน ใช้งานง่ายและใช้งานร่วมกับโบรกเกอร์ได้ทันทีที่คุณลงชื่อสมัครใช้คุณจะสามารถเข้าถึงอินเทอร์เฟซของสัญญาณสดได้ทันที รอสัญญาณใหม่ที่จะสร้างขึ้นในเว็บไซต์ของเราแล้ววางการค้าของคุณก่อนที่จะแนะนำให้นับลงทำงานเป็น 0 สัญญาณการซื้อขายของเรายังทำงานร่วมกับโบรกเกอร์ใด ๆ คนกำลังพูดถึงเกี่ยวกับเรา We8217re ได้รับคำแนะนำจากเว็บไซต์การค้าอื่น ๆ และได้รับเลือกให้เป็นผู้ให้บริการตัวเลือกไบนารีอันดับที่ 1 โดย Investoo ขณะนี้เรามีตัวเลือกไบนารีฟรีให้กับผู้ใช้ที่ลงทะเบียนกับโบร
Comments
Post a Comment