คำถามติดแท็ก grep

สำหรับคำถามเกี่ยวกับ grep เครื่องมือบรรทัดคำสั่งสำหรับค้นหารูปแบบข้อความในไฟล์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ grep หรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้เครื่องมือบรรทัดคำสั่ง grep


2
ฉันจะกำหนดเอาต์พุตของคำสั่งให้กับตัวแปร shell ได้อย่างไร?
ฉันต้องการกำหนดผลลัพธ์ของนิพจน์ให้กับตัวแปรและเชื่อมโยงกับสตริงแล้วสะท้อนกลับ นี่คือสิ่งที่ฉันได้รับ: #!/bin/bash cd ~/Desktop; thefile= ls -t -U | grep -m 1 "Screen Shot"; echo "Most recent screenshot is: "$thefile; แต่ผลลัพธ์นั้น: Screen Shot 2011-07-03 at 1.55.43 PM.png Most recent screenshot is: ดังนั้นดูเหมือนว่าจะไม่ได้รับมอบหมาย$thefileและกำลังถูกพิมพ์ขณะดำเนินการ

10
วิธี grep สตรีมข้อผิดพลาดมาตรฐาน (stderr)?
ฉันใช้ ffmpeg เพื่อรับข้อมูลเมตาของคลิปเสียง แต่ฉันไม่สามารถ grep มัน $ ffmpeg -i 01-Daemon.mp3 |grep -i Duration FFmpeg version SVN-r15261, Copyright (c) 2000-2008 Fabrice Bellard, et al. configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib --mandir=/usr/share/man --arch=i386 --extra-cflags=-O2 ... ฉันตรวจสอบเอาต์พุต ffmpeg นี้โดยตรงไปที่ stderr $ ffmpeg -i 01-Daemon.mp3 2> /dev/null ดังนั้นฉันคิดว่า grep ไม่สามารถอ่านสตรีมข้อผิดพลาดเพื่อตรวจจับเส้นที่ตรงกันได้ เราจะเปิดใช้งาน grep เพื่ออ่านสตรีมข้อผิดพลาดได้อย่างไร? การใช้ลิงก์nixCraftฉันเปลี่ยนเส้นทางสตรีมข้อผิดพลาดมาตรฐานไปยังสตรีมเอาต์พุตมาตรฐานจากนั้น …

7
แสดงไฟล์ทั้งหมดจนถึงการแข่งขัน
grep --before-context 5 แสดง 5 บรรทัดก่อนการแข่งขัน ฉันต้องการแสดงทุกอย่างก่อนการแข่งขัน การgrep --before-context 99999999ทำงานจะได้ผล แต่มันไม่ได้เป็นมืออาชีพมากนัก วิธีการแสดงไฟล์ทั้งหมดถึงการแข่งขัน?

3
grep ส่งคืน“ การจับคู่ไฟล์ไบนารี (อินพุตมาตรฐาน)” เมื่อพยายามค้นหารูปแบบสตริงในไฟล์
ฉันอยู่บน Ubuntu และฉันพิมพ์cat .bash_history | grep gitและมันกลับมา ไฟล์ไบนารี (อินพุตมาตรฐาน) ตรงกัน ฉันไม่อยู่และมีหลายสายในนั้นที่เริ่มต้นด้วยbash_historygit เกิดอะไรขึ้นกับแสดงข้อผิดพลาดนี้และฉันจะแก้ไขได้อย่างไร
71 files  grep  binary 

4
Recursive grep vs find / -type f -exec grep {} \; ข้อใดมีประสิทธิภาพมากขึ้น / เร็วขึ้น?
ไฟล์ใดที่มีประสิทธิภาพมากกว่าสำหรับการค้นหาไฟล์ในระบบไฟล์ทั้งหมดที่มีสตริง: grep แบบเรียกซ้ำหรือค้นหาด้วย grep ในคำสั่ง exec? ฉันคิดว่าการค้นหาจะมีประสิทธิภาพมากขึ้นเพราะอย่างน้อยคุณสามารถทำการกรองบางอย่างได้ถ้าคุณรู้จักนามสกุลไฟล์หรือ regex ที่ตรงกับชื่อไฟล์ แต่เมื่อคุณรู้ว่าตัว-type fไหนดีกว่า greu GNU 2.6.3; find (GNU findutils) 4.4.2 ตัวอย่าง: grep -r -i 'the brown dog' / find / -type f -exec grep -i 'the brown dog' {} \;
70 grep  find 

2
ปัญหา regex ของ grep 'OR'
ฉันพยายามใช้ grep กับ regex เพื่อค้นหาบรรทัดในไฟล์ที่ตรงกับ 1 ใน 2 สตริงที่เป็นไปได้ นี่คือ grep ของฉัน: $ grep "^ID.*(ETS|FBS)" my_file.txt grep ด้านบนไม่แสดงผลลัพธ์ใด ๆ อย่างไรก็ตามหากฉันดำเนินการอย่างใดอย่างหนึ่ง: $ grep "^ID.*ETS" my_file.txt หรือ $ grep "^ID.*FBS" my_file.txt ฉันจะจับคู่บรรทัดที่เฉพาะเจาะจง เพราะเหตุใด OR regex ของฉันจึงไม่ตรงกัน ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ!

7
วิธีอ่านบรรทัดแรกและบรรทัดสุดท้ายจากเอาต์พุต cat?
ฉันมีไฟล์ข้อความ งาน - รับบรรทัดแรกและบรรทัดสุดท้ายจากไฟล์หลังจาก $ cat file | grep -E "1|2|3|4" | commandtoprint $ cat file 1 2 3 4 5 ต้องการสิ่งนี้โดยไม่ต้องใช้เอาต์พุต cat (เพียง 1 และ 5) ~$ cat file | tee >(head -n 1) >(wc -l) 1 2 3 4 5 5 1 อาจจะมีวิธีแก้ปัญหาที่สั้นลงและสั้นลงกว่าเดิม ...
64 bash  shell  sed  awk  grep 

6
การตรวจจับลวดลายที่ส่วนท้ายของบรรทัดด้วย grep
ถ้าฉันทำ: $ ls -R .: 4Shared/ Cloud/ ./4Shared: UFAIZLV2R7.part3.rar ./Cloud: UFAIZLV2R7.part2.rar.part UFAIZLV2R7.part1.rar.part UFAIZLV2R7.part4.rar.part ถ้าฉันต้องการแสดงรายการ.rarไฟล์เท่านั้นและฉันใช้grepมันจะแสดง.rar.partไฟล์ให้ฉันด้วยเช่นกันสิ่งที่ฉันไม่ต้องการ ฉันกำลังแก้นี้โดยใช้findหรือls **/*.rarที่บอกในหัวข้อนี้และพวกเขาทำงานได้ดี grepแต่ผมอยากจะเรียนรู้ว่ามันเป็นไปได้ที่จะทำมันผ่าน ฉันลองแล้ว (กำลังคิดEOL): ls -R | grep ".rar\n" โดยไม่มีผลลัพธ์ ฉันคิดว่าปัญหาอยู่ที่การค้นพบว่าพบ greping ที่ส่วนท้ายของบรรทัดแต่ฉันไม่แน่ใจ มีอะไรช่วยด้วยมั้ย
64 grep 

6
วิธีไพพ์ผลลัพธ์ของการค้นหา grep ลงในไฟล์ vi ใหม่
ฉันใช้grep -e Peugeot -e PeuGeot carlist.txtเพื่อค้นหาผ่าน carlist.txt และดึงบางรายการออกมาและฉันคิดว่าgrep -e Peugeot -e PeuGeot carlist.txt | viมันน่าจะเป็นสิ่งที่ฉันต้องการ แต่นี่คือสิ่งที่ฉันได้รับ: Vim: Warning: Input is not from a terminal Vim: Error reading input, exiting... Vim: preserving files... Vim: Finished.
63 grep  vi 

4
จับคู่สตริงที่แน่นอนโดยใช้ grep
ฉันมีไฟล์ข้อความ: deiauk 1611516 afsdf 765 minkra 18415151 asdsf 4152 linkra sfsfdsfs sdfss 4555 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4 deiauk 1611516 afsdf ddfgfgd luktol1 4545 4 9 luktol 1 deiaukและฉันต้องการที่ตรงกับ เมื่อฉันทำสิ่งนี้: grep "deiauk" file.txt ฉันได้รับผลลัพธ์นี้: deiauk 1611516 afsdf 765 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4 แต่ฉันต้องการเพียงสิ่งนี้: …
63 grep 

1
อะไรคือวัตถุประสงค์ที่แท้จริงของตัวเลือก -X GNU grep และทำไมมันไม่มีเอกสาร?
จากการอ่านคำถามนี้ฉันได้ค้นพบว่า GNU grepมี-Xตัวเลือกที่คาดว่าจะมีข้อโต้แย้ง น่าแปลกที่มันถูกกล่าวถึงไม่ว่าในหน้าคนหรือในหน้าข้อมูล ดูซอร์สโค้ดมีคอมเม้นต์นั้นอยู่ตรงกลาง--helpเอาท์พุท : /* -X is deliberately undocumented. */ มองต่อไปก็ปรากฏว่า-X matcherตัวเลือกชุดเครื่องมือที่ใช้สำหรับแต่ง regexp , matcherเป็นหนึ่ง grep , egrep, fgrep, awk, gawk, posixawkและperl(เหมือนรุ่น 2.25) บางส่วนของค่าเหล่านั้นอย่างเคร่งครัดเหมือนกันกับตัวเลือกที่มีอยู่ (คือgrep -G, grep -E, grep -Fและgrep -P) ในขณะที่awkตัวแปรทั้งสามไม่มีตัวเลือกที่สอดคล้องกัน มีคนรู้ว่าอะไรคือวัตถุประสงค์ที่แท้จริงของตัวเลือกนี้โดยเฉพาะอย่างยิ่งกับหนึ่งในโปรแกรมawkregexp ใครสามารถบอกฉันได้ว่าทำไมมันถึงไม่มีเอกสารรับรองโดยเจตนา?
58 grep  options 

3
grep ภายในน้อยลงหรือไม่
ขณะนี้ฉันกำลังตรวจสอบบันทึกที่ไม่คุ้นเคยจำนวนมากเพื่อค้นหาปัญหาบางอย่าง ไฟล์แรกที่ฉันดูคือ Events.log และฉันได้รับอย่างน้อยสามหน้าlessซึ่งดูเหมือนจะแสดงเหตุการณ์เดียวกันในเวลาที่ต่างกัน - เหตุการณ์ที่ดูเหมือนจะไม่เป็นธรรม ฉันต้องการที่จะกรองเหตุการณ์นี้ออกและตอนนี้ฉันออกlessและทำอะไรบางอย่างเช่น grep -v "event text" Events.log | less ตอนนี้นำเหตุการณ์ทั่วไปที่ไม่น่าสนใจอื่น ๆ จำนวนมากที่ฉันต้องการกรองออก มีวิธีที่ฉันสามารถgrep -v อยู่ข้างในของless? แทนที่จะต้องทำ egrep -v "event text|something else|the other thing|foo|bar" Events.log | less มันทำให้ฉันเป็นคุณลักษณะที่มีประโยชน์เมื่อดูแฟ้มบันทึกชนิดใด - และถ้าlessไม่ใช่เครื่องมือมีคุณสมบัติอื่นที่ฉันต้องการหรือไม่ เพียงแค่lessผู้ชมสไตล์ที่มีในgrepตัว
58 bash  grep  logs  less 

2
grep กับตัวแปร
สมมติว่าฉันมีตัวแปร line="This is where we select from a table." ตอนนี้ฉันต้องการ grep เลือกกี่ครั้งเกิดขึ้นในประโยค grep -ci "select" $line ฉันลองมัน แต่มันใช้งานไม่ได้ ฉันก็ลอง grep -ci "select" "$line" มันยังไม่ทำงาน ฉันได้รับข้อผิดพลาดดังต่อไปนี้ grep: This is where we select from a table.: No such file or directory
58 shell  grep  string 

9
วิธี grep สำหรับสายเดียวกัน แต่หลายไฟล์ในเวลาเดียวกันได้อย่างไร
ฉันมีชุดไฟล์บันทึกที่ฉันต้องการตรวจสอบและฉันต้องการค้นหาสตริงที่ระบุในไฟล์เดียวกันพร้อมกันเป็นไปได้หรือไม่ ขณะนี้ฉันกำลังใช้ grep -E 'fatal|error|critical|failure|warning|' /path_to_file ฉันจะใช้สิ่งนี้และค้นหาสตริงของไฟล์หลายไฟล์พร้อมกันได้อย่างไร หากนี่เป็นสิ่งที่จำเป็นต้องมีสคริปต์ผู้อื่นสามารถให้สคริปต์ง่ายๆเพื่อทำสิ่งนี้ได้หรือไม่
57 scripting  grep 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.