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

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

2
การนับจำนวนคำในไฟล์ข้อความ
ฉันมีไฟล์ข้อความที่มีทวีตและฉันจำเป็นต้องนับจำนวนครั้งที่มีการกล่าวถึงคำในทวีต ตัวอย่างเช่นไฟล์ประกอบด้วย: Apple iPhone X is going to worth a fortune The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors? และสมมติว่าฉันต้องการนับกี่ครั้งที่คำว่า iPhone ถูกกล่าวถึงในไฟล์ ดังนั้นนี่คือสิ่งที่ฉันได้ลอง cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l มันใช้งานได้จริง แต่ฉันสับสนเกี่ยวกับคำสั่ง 'wc' ในยูนิกซ์ อะไรคือความแตกต่างถ้าฉันลองทำสิ่งที่ชอบ: cut -f 1 Tweet_Data …

3
อะไรคือความแตกต่างที่แน่นอนระหว่าง awk และตัดด้วย grep? [ปิด]
เรารู้ว่าเราสามารถรับคอลัมน์ที่สองของบรรทัดที่เราต้องการจากไฟล์โดยใช้เทคนิคทั้งสองนี้: awk '/WORD/ { print $2 }' filename หรือ grep WORD filename| cut -f 2 -d ' ' คำถามของฉันคือ: อะไรคือความแตกต่างระหว่างสองคำสั่งด้านบน? อันไหนมีประสิทธิภาพดีที่สุด? อะไรคือข้อดีของการใช้awkเกินกว่าcutและในทางกลับกัน? ตัวเลือกอะไรที่awkทำให้เรามีcutทางกลับกัน?
30 awk  grep  performance  cut 

3
Grep หลากสี
ฉันพยายามเรียกคำสั่ง grep แต่ละคำเพื่อเน้นว่าผลลัพธ์เป็นสีที่ต่างกัน ฉันสามารถทำได้ด้วยตนเองโดยใช้บรรทัดดังนี้: ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f cตัวละครทุกตัวจะถูกเน้นด้วยสีเขียวและoตัวละครทุกตัวจะถูกเน้นด้วยสีแดง ฯลฯ ... เพื่อให้ตัวอย่างนี้ทำงานคุณจะต้องแน่ใจว่าคุณมี --color=alwaysคำสั่ง grep อยู่เสมอ ฉันได้ตั้งค่านี้ใน.bashrc grep ของฉันดังนั้นจะมีสี: export GREP_OPTIONS='--color=always' สิ่งที่ฉันพยายามทำให้สำเร็จคือห่อฟังก์ชันนี้ด้วยนามแฝงเพื่อให้ฉันสามารถโทรได้ grepและมีGREP_COLORSค่าที่แตกต่างกันในแต่ละครั้ง ฉันเข้าใจการพิจารณาของเชลล์จำนวนมากสำหรับ grep piped ใหม่แต่ละอันและฉันพยายามทำสิ่งนี้โดยการสร้างไฟล์บางไฟล์ (หนึ่งสำหรับแต่ละสี) เพื่อระบุว่าพวกมันถูกใช้ไปแล้ว ฉันได้พยายามมาบ้างแล้ว แต่ก็แปลกแล้วอันนี้ดูเหมือนจะทำงานได้ดีที่สุด ฉันมีสิ่งนี้ในของฉัน.bashrc : alias mg="mygrep" mygrep(){ # define …
30 bash  shell  grep  pipe  bashrc 

7
รายการไฟล์ที่มีคำเฉพาะในข้อความของพวกเขา
ฉันต้องการแสดงรายการไฟล์ซ้ำและไม่ซ้ำกันซึ่งมีคำที่กำหนด ตัวอย่าง : การตรวจสอบคำว่า 'ตรวจสอบ' ฉันทำตามปกติคือ grep $ grep check * -R แต่เนื่องจากมีคำนี้เกิดขึ้นมากมายฉันได้รับผลลัพธ์จำนวนมาก ดังนั้นฉันเพียงต้องการรายการชื่อไฟล์ที่มีคำค้นหาที่กำหนด ฉันเดาว่ามีfindและxargsจะพอเพียงที่นี่ แต่ไม่แน่ใจ ความคิดใด ๆ
30 find  grep  file-search 


5
ป้องกัน grep ไม่ให้ออกในกรณีที่มีการระบุชื่อ
สคริปต์นี้ไม่ได้สะท้อน "หลัง": #!/bin/bash -e echo "before" echo "anything" | grep e # it would if I searched for 'y' instead echo "after" exit และถ้าฉันลบ-eตัวเลือกในบรรทัด shebang ออก แต่ฉันต้องการเก็บไว้เพื่อให้สคริปต์ของฉันหยุดทำงานหากมีข้อผิดพลาด ฉันไม่คิดว่า grep ไม่พบการจับคู่เป็นข้อผิดพลาด ฉันจะป้องกันไม่ให้ออกโดยทันทีได้อย่างไร

6
ไพพ์ไปยังหลายไฟล์ในเชลล์
ฉันมีแอปพลิเคชั่นซึ่งจะสร้างข้อมูลจำนวนมากซึ่งฉันไม่ต้องการจัดเก็บลงดิสก์ แอปพลิเคชั่นส่วนใหญ่ส่งออกข้อมูลที่ฉันไม่ต้องการใช้ แต่เป็นชุดข้อมูลที่มีประโยชน์ที่ต้องแยกเป็นไฟล์แยกต่างหาก ตัวอย่างเช่นกำหนดเอาต์พุตต่อไปนี้: JUNK JUNK JUNK JUNK A 1 JUNK B 5 C 1 JUNK ฉันสามารถเรียกใช้แอปพลิเคชันได้สามครั้งดังนี้: ./app | grep A > A.out ./app | grep B > B.out ./app | grep C > C.out นี่จะทำให้ฉันได้สิ่งที่ฉันต้องการ แต่ใช้เวลานานเกินไป ฉันไม่ต้องการดัมพ์เอาต์พุตทั้งหมดไปยังไฟล์เดียวและวิเคราะห์คำนั้น มีวิธีใดบ้างที่จะรวมการดำเนินการทั้งสามที่แสดงไว้ด้านบนในลักษณะที่ฉันจะต้องเรียกใช้แอปพลิเคชันเพียงครั้งเดียวและยังคงได้รับไฟล์เอาต์พุตสามไฟล์
29 bash  shell  grep  pipe 

12
ฉันจะ "แมว" ไฟล์และลบบรรทัดที่มีความคิดเห็นได้อย่างไร
ฉันต้องการทราบว่ามีวิธีที่ฉันสามารถcatยื่นphp.iniและลบบรรทัดทั้งหมดที่ขึ้นต้นด้วย; ตัวอย่างเช่นหากไฟล์มีสิ่งนี้: ; - Show all errors, except for notices ; ;error_reporting = E_ALL & ~E_NOTICE ; ; - Show only errors ; ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; ; - Show all errors except for notices ; error_reporting = E_ALL & ~E_NOTICE และฉันรันคำสั่งที่ถูกต้องcat | {remove comments command}จากนั้นฉันก็จะจบลงด้วย: error_reporting = E_ALL & …

6
วิธีเพิ่มการขึ้นบรรทัดใหม่ก่อนขึ้นบรรทัดใหม่ทุกครั้ง
ฉันมีไฟล์ที่ใช้\nสำหรับบรรทัดใหม่เท่านั้น แต่ฉันต้องการให้มี\r\nสำหรับแต่ละบรรทัดใหม่ ฉันจะทำสิ่งนี้ได้อย่างไร ตัวอย่างเช่นฉันแก้ไขในการใช้ Vim :%s/\n/\r\n/gแต่ฉันต้องการใช้สคริปต์หรือแอปพลิเคชันบรรทัดคำสั่ง ข้อเสนอแนะใด ๆ ฉันพยายามค้นหาสิ่งนี้ด้วยsedหรือgrepแต่ฉันสับสนทันทีโดยวิธีแก้ปัญหาลำดับหนี (ฉันเป็นสีเขียวเล็กน้อยด้วยคำสั่งเหล่านี้) หากสนใจแอปพลิเคชันจะเกี่ยวข้องกับคำถาม / คำตอบของฉันที่นี่
28 sed  grep  newlines 

8
grep และหาง -f
เป็นไปได้ที่จะทำtail -f(หรือคล้ายกัน) ในไฟล์และgrepในเวลาเดียวกัน? ฉันจะไม่รังเกียจคำสั่งอื่น ๆ เพียงแค่มองหาพฤติกรรมแบบนั้น

8
ฉันจะแสดงรายการทุกไฟล์ในไดเรกทอรียกเว้นไฟล์ที่มีนามสกุลที่ระบุได้อย่างไร
สมมติว่าฉันมีโฟลเดอร์ที่มี. txt , .pdfและไฟล์อื่น ๆ ฉันต้องการแสดงรายการไฟล์ "อื่น ๆ " (เช่นไฟล์ที่ไม่มีนามสกุล. txtหรือ. pdf ) คุณมีคำแนะนำเกี่ยวกับวิธีการทำเช่นนี้หรือไม่? ฉันรู้วิธีแสดงรายการไฟล์ที่ไม่มีส่วนขยายที่กำหนด ตัวอย่างเช่นหากฉันต้องการแสดงรายการไฟล์ทั้งหมดยกเว้นไฟล์. txtให้เลือกเช่นกัน find -not -iname "*.txt" หรือ ls | grep -v '\.txt$' | column ดูเหมือนจะทำงาน แต่ฉันจะแสดงรายการทุกอย่างยกเว้นไฟล์. txt หรือ ไฟล์. pdf ได้อย่างไร มันดูเหมือนว่าฉันต้องใช้การจัดเรียงของตรรกะ "หรือ" บางอย่างในหรือfindgrep
28 grep  find  ls 

4
วิธีการ“ grep” สำหรับความยาวบรรทัดในช่วงที่กำหนด?
หมายเหตุ:คำถามนี้เป็นส่วนเติมเต็มของคำถาม & คำตอบ: วิธีการ "grep" สำหรับความยาวบรรทัด * ไม่ใช่ * ในช่วงที่กำหนด? ฉันต้องได้รับเพียงบรรทัดจาก textfile (wordlist, คั่นด้วยขึ้นบรรทัดใหม่) ที่มีช่วงความยาวต่ำสุดหรือเท่ากับ 3 อักขระ แต่ไม่เกินหรือเท่ากับ 10 ตัวอย่าง: INPUT: egyezményét megkíván ki alma kevesen meghatározó เอาท์พุท: megkíván alma kevesen คำถาม:ฉันจะทำสิ่งนี้ได้bashอย่างไร
28 bash  sed  grep  perl 

4
จะระบุตัวอักษรโดยใช้รหัสเลขฐานสิบหกใน `grep 'ได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 8 ปีที่ผ่านมา ฉันใช้คำสั่งต่อไปนี้เพื่อตั้งค่าช่วงอักขระ grep สำหรับรหัสเลขฐานสิบหก 0900 (แทนअ) ถึง 097F (แทนव) ฉันจะใช้รหัสเลขฐานสิบหกแทนअและवได้อย่างไร bzcat archive.bz2 | grep -v '<[अ-व]*\s' | tr '[:punct:][:blank:][:digit:]' '\n' | uniq | grep -o '^[अ-व]*$' | sort -f | uniq -c | sort -nr | head -50000 | …

8
วิธี grep-inverse-match และแยกบรรทัด“ before” และ“ after”
พิจารณาไฟล์ข้อความด้วยรายการต่อไปนี้: aaa bbb ccc ddd eee fff ggg hhh iii ด้วยรูปแบบ (เช่นfff) ฉันต้องการ grep ไฟล์ด้านบนเพื่อให้ได้ผลลัพธ์: all_lines except (pattern_matching_lines U (B lines_before) U (A lines_after)) ตัวอย่างเช่นถ้าB = 2และA = 1เอาต์พุตที่มี pattern = fffควรเป็น: aaa bbb ccc hhh iii ฉันจะทำสิ่งนี้กับ grep หรือเครื่องมือบรรทัดคำสั่งอื่น ๆ ได้อย่างไร หมายเหตุเมื่อฉันลอง: grep -v 'fff' -A1 -B2 file.txt ฉันไม่ได้สิ่งที่ฉันต้องการ …

4
วิธีใช้ grep เมื่อไฟล์ไม่มีสตริง
ในสคริปต์ทุบตีของฉันฉันกำลังพยายามพิมพ์บรรทัดหากสตริงที่แน่นอนไม่มีอยู่ในไฟล์ if grep -q "$user2" /etc/passwd; then echo "User does exist!!" นี่คือวิธีที่ฉันเขียนถ้าฉันต้องการให้สตริงมีอยู่ในไฟล์ แต่ฉันจะเปลี่ยนได้อย่างไรเพื่อให้พิมพ์ "ผู้ใช้ไม่มีอยู่" หากผู้ใช้ไม่พบในไฟล์ / etc / passwd?
26 bash  ubuntu  grep 

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