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

grep เป็นยูทิลิตี้ค้นหาข้อความบรรทัดคำสั่ง แต่เดิมเขียนสำหรับ Unix มันใช้การแสดงออกปกติเพื่อจับคู่ข้อความและมักจะใช้เป็นตัวกรองในท่อ ใช้แท็กนี้เฉพาะเมื่อคำถามของคุณเกี่ยวข้องกับการเขียนโปรแกรมโดยใช้ grep หรือ grep-based API คำถามที่เกี่ยวข้องกับการใช้หรือการแก้ไขปัญหาตัวเลือกบรรทัดคำสั่ง grep นั้นอยู่นอกหัวข้อ

8
บรรทัดคำสั่ง grep แบบเรียกซ้ำของ Windows
ฉันต้องทำ grep แบบเรียกซ้ำใน Windows สิ่งนี้ใน Unix / Linux: grep -i 'string' `find . -print` หรือวิธีที่ต้องการมากขึ้น: find . -print | xargs grep -i 'string' ฉันติดแค่ cmd.exe ดังนั้นฉันจึงมีเฉพาะคำสั่งในตัวของ Windows ฉันไม่สามารถติดตั้งCygwinหรือเครื่องมือของบุคคลที่สามเช่นUnxUtilsบนเซิร์ฟเวอร์นี้ได้อย่างน่าเสียดาย ฉันไม่แน่ใจด้วยซ้ำว่าฉันสามารถติดตั้ง PowerShell ได้ คำแนะนำใด ๆ ที่ใช้ built-in cmd.exe (Windows 2003 Server)

10
จะรับรหัสกระบวนการเพื่อฆ่ากระบวนการ nohup ได้อย่างไร
ฉันกำลังเรียกใช้กระบวนการ nohup บนเซิร์ฟเวอร์ เมื่อฉันพยายามที่จะฆ่ามันคอนโซล putty ของฉันจะปิดแทน นี่คือวิธีที่ฉันพยายามค้นหา ID กระบวนการ: ps -ef |grep nohup นี่คือคำสั่งให้ฆ่า kill -9 1787 787
204 linux  bash  grep  nohup 

9
ใช้ grep เพื่อค้นหาสตริงที่มีจุดอยู่ในนั้น
ฉันพยายามค้นหาสตริง0.49(ด้วยจุด) โดยใช้คำสั่ง grep -r "0.49" * แต่สิ่งที่เกิดขึ้นก็คือว่านอกจากนี้ผมยังได้รับผลที่ไม่พึงประสงค์ซึ่งมีสตริงเช่น0449, 0949ฯลฯ ,. สิ่งนั้นคือ linux โดยพิจารณาจุด (.) เป็นตัวอักษรใด ๆ และแสดงผลลัพธ์ทั้งหมด แต่ฉันต้องการได้ผลลัพธ์สำหรับ "0.49" เท่านั้น
196 linux  grep 

3
grep regex ไม่ได้มีสตริง
ฉันกำลังส่งรายการรูปแบบ regex ไปgrepยังเพื่อตรวจสอบกับไฟล์ syslog พวกเขามักจะตรงกับที่อยู่ IP และบันทึกรายการ; grep "1\.2\.3\.4.*Has exploded" syslog.log มันเป็นรายการของรูปแบบที่เหมือนกับ"1\.2\.3\.4.*Has exploded"ตอนที่ฉันผ่านเป็นวงดังนั้นฉันไม่สามารถผ่าน "-v" ได้ ฉันสับสนที่พยายามทำผกผันของด้านบนบรรทัดที่ไม่ตรงกับที่อยู่ IP และข้อผิดพลาดบางอย่างดังนั้น "! 1.2.3.4. * มีการระเบิด" จะจับคู่สาย syslog สำหรับสิ่งอื่นที่ไม่ใช่ 1.2.3.4 บอกฉันว่ามันระเบิด . ฉันจะต้องรวม IP เพื่อไม่ให้ตรงกัน ฉันได้เห็นโพสต์ที่คล้ายกันมากมายใน StackOverflor แต่พวกเขาใช้รูปแบบ regex ที่ฉันไม่สามารถใช้งานgrepได้ ทุกคนสามารถให้ตัวอย่างที่ใช้งานได้เพื่อgrepโปรด UPDATE: สิ่งนี้เกิดขึ้นในสคริปต์เช่นนี้ patterns[1]="1\.2\.3\.4.*Has exploded" patterns[2]="5\.6\.7\.8.*Has died" patterns[3]="\!9\.10\.11\.12.*Has exploded" for i in {1..3} do …
181 regex  grep 


9
หรูหรายิ่งขึ้น“ ps aux | grep -v grep”
เมื่อฉันตรวจสอบรายการกระบวนการและ 'grep' กระบวนการที่น่าสนใจสำหรับฉันgrepตัวมันเองก็รวมอยู่ในผลลัพธ์ด้วย ตัวอย่างเช่นหากต้องการแสดงรายการเทอร์มินัล: $ ps aux | grep terminal user 2064 0.0 0.6 181452 26460 ? Sl Feb13 5:41 gnome-terminal --working-directory=.. user 2979 0.0 0.0 4192 796 pts/3 S+ 11:07 0:00 grep --color=auto terminal โดยปกติฉันใช้ps aux | grep something | grep -v grepเพื่อกำจัดรายการสุดท้าย ... แต่มันก็ไม่ได้สวยงาม :) คุณมีแฮ็คที่สง่างามกว่านี้เพื่อแก้ปัญหานี้ (นอกเหนือจากการรวมคำสั่งทั้งหมดไว้ในสคริปต์แยกต่างหากซึ่งไม่เลว)
177 linux  grep 


12
วิธีรับส่วนของไฟล์หลังจากบรรทัดแรกที่ตรงกับนิพจน์ทั่วไป
ฉันมีไฟล์ที่มีประมาณ 1,000 บรรทัด ฉันต้องการส่วนของไฟล์ของฉันหลังจากบรรทัดที่ตรงกับคำสั่ง grep ของฉัน นั่นคือ: $ cat file | grep 'TERMINATE' # It is found on line 534 ดังนั้นฉันต้องการไฟล์จากบรรทัด 535 ถึงบรรทัด 1000 สำหรับการประมวลผลเพิ่มเติม ฉันจะทำสิ่งนั้นได้อย่างไร
169 bash  shell  scripting  grep 

9
(grep) Regex จับคู่อักขระที่ไม่ใช่ ASCII หรือไม่
บน Linux ฉันมีไดเรกทอรีที่มีไฟล์จำนวนมาก บางคนมีอักขระที่ไม่ใช่ ASCII แต่พวกเขาจะถูกต้องทั้งหมดUTF-8 โปรแกรมหนึ่งมีข้อบกพร่องที่ป้องกันไม่ให้ทำงานกับชื่อไฟล์ที่ไม่ใช่ ASCII และฉันต้องค้นหาว่ามีผลกระทบกับจำนวนเท่าใด ฉันจะทำสิ่งนี้ด้วยfindแล้วทำgrepเพื่อพิมพ์อักขระที่ไม่ใช่ ASCII จากนั้นทำ a wc -lเพื่อค้นหาตัวเลข มันไม่จำเป็นต้องเป็น grep ฉันสามารถใช้นิพจน์ทั่วไปของ Unix มาตรฐานเช่นPerl , sed , AWKเป็นต้น อย่างไรก็ตามมีการแสดงออกปกติสำหรับ 'ตัวละครที่ไม่ใช่ตัวอักษร ASCII' หรือไม่?
169 regex  unicode  grep  ascii 


9
วิธีลบบรรทัดที่ปรากฏในไฟล์ B จากไฟล์ A อื่น?
ฉันมีไฟล์ขนาดใหญ่A (ประกอบด้วยอีเมล) หนึ่งบรรทัดสำหรับแต่ละเมล ฉันยังมีไฟล์ Bอีกอันที่มีเมลอีกชุดหนึ่ง ฉันจะใช้คำสั่งใดเพื่อลบที่อยู่ทั้งหมดที่ปรากฏในไฟล์ B จากไฟล์ A ดังนั้นว่าไฟล์ที่มีอยู่: A B C และไฟล์ B บรรจุอยู่: B D E จากนั้นไฟล์ A ควรจะเหลือด้วย: A C ตอนนี้ฉันรู้ว่านี่เป็นคำถามที่อาจจะได้รับการถามบ่อยขึ้น แต่ผมพบว่าเพียงหนึ่งคำสั่งออนไลน์ที่ให้ฉันข้อผิดพลาดที่มีตัวคั่นที่ไม่ดี ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก! ใครบางคนจะมากับซับในที่ฉลาด แต่ฉันไม่ใช่ผู้เชี่ยวชาญเชลล์
160 linux  shell  sed  diff  grep 

10
วิธีการต่อผลลัพธ์หลายบรรทัดเข้าด้วยกันเป็นหนึ่งบรรทัด?
ถ้าฉันรันคำสั่งcat file | grep patternฉันจะได้ผลลัพธ์หลายบรรทัด คุณต่อแถวทั้งหมดเป็นหนึ่งบรรทัดได้อย่างไรโดยแทนที่แต่ละบรรทัด"\n"ด้วย"\" "(ลงท้ายด้วย"ช่องว่าง) cat file | grep pattern | xargs sed s/\n/ /g ไม่ทำงานสำหรับฉัน
158 linux  bash  unix  grep  tr 

8
PowerShell เทียบเท่ากับ grep -f
ฉันกำลังมองหา PowerShell grep --file=filenameเทียบเท่ากับ ถ้าคุณไม่รู้grepชื่อไฟล์คือไฟล์ข้อความที่แต่ละบรรทัดมีรูปแบบนิพจน์ทั่วไปที่คุณต้องการจับคู่ บางทีฉันอาจขาดอะไรบางอย่างที่ชัดเจน แต่Select-Stringดูเหมือนจะไม่มีตัวเลือกนี้
157 powershell  grep 

11
แสดงรายการไฟล์ที่มีนามสกุลเฉพาะด้วย ls และ grep
ฉันต้องการรับไฟล์จาก dir ปัจจุบันและส่งออกเฉพาะ. mp4 ไฟล์. mp3.mp3 เท่านั้น ดังนั้นฉันคิดว่าฉันสามารถทำได้: ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$ แต่ไม่เพราะ grep ตัวแรกจะออกมาเพียงแค่ mp4 เท่านั้นส่วนอีก 2 grep จะไม่ถูกใช้งาน ความคิดใด ๆ PS, รันสคริปต์นี้บน Slow Leopard
153 bash  shell  macos  grep 

7
วิธีการประมวลผลแต่ละบรรทัดที่ได้รับจากคำสั่ง grep
ฉันมีจำนวนบรรทัดที่ดึงมาจากไฟล์หลังจากรันคำสั่งgrepดังนี้: var=`grep xyz abc.txt` สมมติว่าฉันได้ 10 บรรทัดซึ่งประกอบด้วย xyz เป็นผลลัพธ์ ตอนนี้ฉันต้องประมวลผลแต่ละบรรทัดที่ฉันได้รับจากคำสั่ง grep ฉันจะดำเนินการสิ่งนี้ได้อย่างไร
152 bash  shell  grep 

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