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

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

8
จะตรวจสอบว่าที่อยู่ IP ใด ๆ อยู่ในไฟล์โดยใช้เชลล์สคริปต์ได้หรือไม่
ฉันมีสคริปต์ที่สร้างผลลัพธ์บางอย่าง ฉันต้องการตรวจสอบผลลัพธ์สำหรับที่อยู่ IP ใด ๆ ที่ต้องการ 159.143.23.12 134.12.178.131 124.143.12.132 if (IPs are found in <file>) then // bunch of actions // else // bunch of actions // เป็นfgrepความคิดที่ดีหรือไม่? ฉันทุบตีใช้ได้
14 shell-script  grep  ip 

2
ตัวเลือก --color = auto สำหรับ grep GNU หมายถึงอะไร?
AFAICT ไม่ใช่ man page สำหรับ GNU grepและไม่info grepควรสะกดว่าอะไร--color=autoหมายถึงอะไร ฉันต้องเป็นหนึ่งในไม่กี่คนบนโลกที่ความหมายของตัวเลือกนี้ไม่ชัดเจนในทันที ผมคาดการณ์ว่า--color=auto"เป็นSOMEWHEREในระหว่าง" --color=neverและ--color=alwaysแต่ที่ใบยังไม่ระบุรายละเอียดมากเกินไป
14 grep 

5
ไฟล์ grep จากรายการ
ฉันกำลังพยายามเรียกใช้ grep กับรายการของไฟล์สองสามร้อย: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php อย่างไรก็ตามแม้ว่าฉันกำลังค้นหาสตริงที่ฉันรู้ว่าพบในไฟล์ต่อไปนี้จะไม่ค้นหาไฟล์: $ grep -i 'foo' <(cat files.txt) $ grep -i 'foo' admin.php The foo was found ฉันคุ้นเคยกับการ-fตั้งค่าสถานะซึ่งจะอ่านรูปแบบจากไฟล์ แต่จะอ่านไฟล์อินพุตได้อย่างไร? ฉันได้พิจารณาวิธีแก้ปัญหาที่น่ากลัวของการคัดลอกไฟล์ไปยังไดเรกทอรีชั่วคราวตามที่cpดูเหมือนว่าจะสนับสนุน<(cat files.txt)รูปแบบและจากนั้นมีการ grepping ไฟล์ เชอร์ลี่ย์มีวิธีที่ดีกว่า

4
grep สำหรับสตริงตัวอักษรผสมตัวเลขที่มีความยาวใด ๆ กับโคลอนในแต่ละด้าน
วิธีที่คุณจะ grep สำหรับสตริงและตัวเลข 1 ถึง 50 ตัวอักษร (นึกคิด, ความยาวใด ๆ ที่จะทำงานมากเกินไป) กับลำไส้ใหญ่ในแต่ละด้าน - :shopping:ผลโดยทั่วไปจะเป็นทุกสายที่มีสตริง จนถึงตอนนี้ฉันได้รับรหัสด้านล่าง (ฉันลองใช้รูปแบบที่หลากหลาย) ซึ่งใช้งานไม่ได้: grep ':[[:alnum:]]{1,100}:' ~/x.txt

5
วิธีค้นหาไฟล์ที่มีสองคำที่แตกต่างกันอยู่?
ฉันกำลังมองหาวิธีการค้นหาไฟล์ที่มีอินสแตนซ์ของคำสองคำอยู่ในไฟล์เดียวกัน ฉันใช้สิ่งต่อไปนี้เพื่อทำการค้นหาจนถึงจุดนี้: find . -exec grep -l "FIND ME" {} \; ปัญหาที่ฉันพบคือหากไม่มีช่องว่างตรงระหว่าง "FIND" และ "ME" ผลการค้นหาจะไม่ให้ไฟล์ ฉันจะปรับสตริงการค้นหาเดิมที่ทั้งคำว่า "FIND" และ "ME มีอยู่ในไฟล์ได้อย่างไรเมื่อเทียบกับ" FIND ME " ฉันใช้ AIX
14 grep  find  search 

2
หลามเทียบเท่าของ grep -v คืออะไร?
grep -vผมชอบ ฉันจะใช้มันตลอดเวลา. แต่ฉันกำลังทำการประมวลผลข้อความในหลามและมีสิ่งสำคัญอย่างหนึ่งที่ฉันขาด โดยปกติฉันใช้grep -vเพื่อลบสิ่งที่ไม่เกี่ยวข้องออกจากข้อความ ตัวอย่างเช่น $ grep -v '[a-z]' # (I manually review this output to confirm that I don't want those lines) $ grep '[a-z]' > linesiwanted แต่ฉันจะจับคู่ regex ใน Python ได้อย่างไร ตัวอย่างเช่นการเติมเต็มของ\w?

4
วิธีการแยกเอาต์พุตเป็นสองไฟล์ด้วย grep
ฉันมีสคริปต์mycommand.shที่ไม่สามารถเรียกใช้สองครั้ง ฉันต้องการแบ่งเอาต์พุตเป็นสองไฟล์ต่างกันหนึ่งไฟล์ที่มีบรรทัดที่ตรงกับ regex และหนึ่งไฟล์ที่มีบรรทัดที่ไม่ตรงกับ regex สิ่งที่ฉันหวังว่าจะมีคืออะไรแบบนี้: ./mycommand.sh | grep -E 'some|very*|cool[regex].here;)' --match file1.txt --not-match file2.txt ฉันรู้ว่าฉันสามารถเปลี่ยนเส้นทางการส่งออกไปยังไฟล์และจากนั้นไปยัง greps ที่ต่างกันสองตัวโดยมีและไม่มีตัวเลือก -v และเปลี่ยนเส้นทางเอาต์พุตไปยังสองไฟล์ที่แตกต่างกัน แต่ฉันกำลังสงสัยว่ามันเป็นไปได้ที่จะทำด้วย grep หนึ่งตัวหรือไม่ ดังนั้นเป็นไปได้หรือไม่ที่จะบรรลุสิ่งที่ฉันต้องการในบรรทัดเดียว?

1
ส่งคืนเจ้าของกระบวนการที่ได้รับ PID
ฉันพยายามที่จะคว้าเจ้าของกระบวนการจากรายการฉันมีคำสั่งpidof nmapเพื่อให้ได้สิ่งps -u <PID> | grep USERที่ฉันกำลังเล่นด้วย แต่เมื่อฉันเรียกใช้มันจะจบลงด้วยการพิมพ์ชื่อเรื่อง (บรรทัดบนสุด) ฉันจะคว้าชื่อเจ้าของที่ให้รหัสกระบวนการได้อย่างไร

2
การจับคู่เชิงลบหลายรูปแบบ Grep
ดังนั้นฉันจึงมีบันทึกของ Apache จำนวนมากโดยใช้รูปแบบบันทึกมาตรฐาน ฉันต้องการรับบันทึกการใช้งานทั้งหมดที่ไม่ได้มาจากโปรแกรมรวบรวมข้อมูลเว็บ ดังนั้นสมมติว่าฉันมีไฟล์ robot_patterns พร้อมรายการเช่น Googlebot msnbot-media YandexBot bingbot ถ้าฉันรันคำสั่งgrep -f robot_patterns *.logฉันจะได้รับรายการทั้งหมดโดยบอทที่ตรงกับรูปแบบข้างต้น รายการจริงของฉันมีบอทและตัวแทนประมาณ 30 รายการที่ฉันต้องการเพิกเฉย แต่ฉันต้องการค้นหารายการทั้งหมดที่ไม่ได้มาจากบ็อต ดังนั้นฉันจึงพยายามgrep -v -f robot_patterns *.logและไม่ส่งกลับผลลัพธ์โดย grep นี่ไม่ใช่สิ่งที่ฉันคาดหวังหรือปรารถนาและฉันไม่ได้หาวิธีที่ชัดเจนเพื่อให้ได้สิ่งที่ฉันต้องการ เมื่อใช้-vตัวเลือกที่รวมกับหลายรูปแบบในไฟล์ grep จะส่งคืนบรรทัดที่ตรงกันหากตรงกับทุกรูปแบบ
14 grep 

1
ทำไมผลลัพธ์ grep BSD นี้แตกต่างจาก grep GNU?
คอมพิวเตอร์ของฉันใช้งาน MacOS 10.12.3 และฉันใช้grepยูทิลิตี้ที่ติดตั้งระบบกับรุ่น 2.5.1-FreeBSD เหล่านี้เป็นผลลัพธ์ที่ฉันได้รับเมื่อทดสอบ regexes ต่างๆ: แต่ถ้าฉันเรียกใช้สิ่งเหล่านี้โดยใช้ GNU grep (รุ่น 2.25) ฉันได้รับต่อไปนี้: grep ของ GNU ดูถูกต้องสำหรับฉันและ BSD นั้นไม่ถูกต้องใช่ไหม ทำไมพวกเขาถึงแตกต่างกัน ฉันไม่เข้าใจว่าทำไม grep ของ BSD จึงตรงกับ "a" เมื่อ regex ระบุว่าจะต้องเป็นไปตามจุดเริ่มต้นของบรรทัด

1
ทำไมฉันต้องหลบหนี“ จุด” สองครั้ง?
ฉันรู้ว่าเราสามารถหลบหนีอักขระพิเศษเช่น*(){}$มี\เพื่อให้เป็นตัวอักษรถือว่า ตัวอย่างเช่น\*หรือ\$ แต่ในกรณีที่.ฉันต้องทำสองครั้งอย่าง\\.อื่นก็ถือว่าเป็นตัวละครพิเศษ ตัวอย่าง: man gcc | grep \\. ทำไมถึงเป็นเช่นนั้น?

2
กรองเอาท์พุทของคำสั่งตามสี
ฉันใช้ยูทิลิตีที่ไม่มีวิธีการกรองเอาท์พุท ไม่มีสิ่งใดในข้อความของผลลัพธ์ที่บ่งบอกว่าฟังก์ชั่นบางอย่างล้มเหลว แต่มันแสดงเป็นสีแดง ผลลัพธ์นั้นยาวที่สุดในตอนที่รายงานข้อผิดพลาดจำนวนหนึ่งฉันไม่สามารถเลื่อนเพื่อดูผลลัพธ์ที่เกิดข้อผิดพลาดได้ ฉันจะกรองข้อความที่ไม่ใช่สีแดงได้อย่างไร รหัสหลอก: dolongtask | grep -color red แก้ไข คำสั่ง outputs สีอื่น ๆ เป็นอย่างดีและผมจะต้องสามารถที่จะกรองออกข้อความทั้งหมดที่ไม่ได้เป็นสีแดง นอกจากนี้การระบายสีข้อความเป็นแบบหลายบรรทัด
13 grep  colors  text  filter 

4
grep ในสองสามพันไฟล์
ฉันมีไดเรกทอรีที่มี cca 26,000 ไฟล์และฉันต้องการ grep ในไฟล์เหล่านี้ทั้งหมด ปัญหาคือฉันต้องการให้เร็วที่สุดดังนั้นจึงไม่เหมาะที่จะสร้างสคริปต์โดยที่ grep จะใช้ชื่อของไฟล์เดียวจากคำสั่ง find และเขียนรายการที่ตรงกันลงในไฟล์ ก่อนที่ปัญหา "รายการอาร์กิวเมนต์ยาวเกินไป" ต้องใช้เวลาประมาณ 2 นาทีในการ grep ในไฟล์นี้ทั้งหมด ความคิดใด ๆ ที่จะทำอย่างไร แก้ไข: มีสคริปต์ที่สร้างไฟล์ใหม่ตลอดเวลาดังนั้นจึงเป็นไปไม่ได้ที่จะนำไฟล์ทั้งหมดไปยังไฟล์ dirs ที่แตกต่างกัน

2
“ Ungrep” - รูปแบบที่ไม่ตรงกัน
ฉันกำลังมองหาคำสั่งหรือสคริปต์ที่จะทำต่อไปนี้ - รับ: file1.txt: abcd efgh ijkl mnop file2.txt: 123abcd123 123efgh123 123mnop123 ฉันต้องการคำสั่งที่ทำสิ่งนี้: ungrep file1.txt file2.txt และส่งคืนสิ่งต่อไปนี้: ijkl กล่าวอีกนัยหนึ่งคือให้บรรทัดใน file1.txt ซึ่งจะไม่ส่งคืนผลลัพธ์ใด ๆ ใน gre2 ของ file2.txt ฉันรู้ว่าฉันสามารถทำได้โดยทำซ้ำผ่าน file1.txt, grepping file2.txt สำหรับแต่ละบรรทัดและจัดเก็บผลลัพธ์และแสดงผลบรรทัดใด ๆ ที่ผลลัพธ์ว่างเปล่า แต่ฉันหวังว่าจะมีประสิทธิภาพมากขึ้นในการทำเช่นนี้
13 grep 


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