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

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

6
ลบบรรทัดที่ไม่ได้เริ่มต้นด้วยรูปแบบจากชุดรูปแบบที่กำหนด
ฉันมีไฟล์ที่มีข้อมูลเช่นนี้: report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. คำถาม: ฉันต้องการลบบรรทัดที่ไม่ได้ขึ้นต้นด้วยสตริงต่อไปนี้: report -th -to นั่นหมายถึงผลลัพธ์ที่ต้องการจะลบจุดและแฮชกลางที่ไม่ต้องการทั้งหมดออกและจะมีลักษณะเช่นนี้: report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/ ฯลฯ วิธีการแก้ปัญหาใด ๆ ที่จะทำงาน

5
grep วิธีการระงับการแสดงไฟล์ที่ไม่ตรงกัน?
ฉันพยายามค้นหาไฟล์ที่มีคำเฉพาะที่ใช้grepอยู่ มีไฟล์จำนวนมากในไดเรกทอรี (> 500) คำสั่งที่ฉันวิ่ง $ grep 'delete' * เอาท์พุต validate_data_stage1:0 validate_data_stage2:0 validate_data_stage3:0 validate_data_stage4:0 validate_data_stage5:0 validate_input_stage1:0 validate_input_stage2:0 validate_input_stage3:0 validate_input_stage4:0 .... and hundred of such lines ไฟล์เหล่านี้เป็นไฟล์ที่ไม่มีการจับคู่ที่กำหนด ฉันต้องการระงับบรรทัดเหล่านั้นไม่ให้แสดงจนถึง stdout ฉันรู้ว่า-qสวิตช์ แต่นั่นจะระงับเอาต์พุตทั้งหมดซึ่งฉันไม่ต้องการ ฉันจะทำอย่างไร

11
Grep Match และสารสกัด
ฉันมีไฟล์ที่มีบรรทัดเป็น proto=tcp/http sent=144 rcvd=52 spkt=3 proto=tcp/https sent=145 rcvd=52 spkt=3 proto=udp/dns sent=144 rcvd=52 spkt=3 ฉันต้องการที่จะดึงค่าของโปรโตซึ่งเป็นtcp/http, ,tcp/httpsudp/dns จนถึงขณะนี้ผมได้พยายามนี้แต่สามารถดึงค่าเป็นgrep -o 'proto=[^/]*/'proto=tcp/
10 awk  grep 

2
grep พฤติกรรมแปลก ๆ ด้วยคำตัวอักษรเดียว
ฉันลบคำหยุดออกจากข้อความโดยใช้รหัสนี้ประมาณ ฉันมีดังต่อไปนี้ $ cat file file types extensions $ cat stopwords i file types grep -vwFf stopwords file ฉันคาดหวังผลลัพธ์: extensions แต่ฉันได้รับ (ฉันคิดว่าไม่ถูกต้อง) file extensions เหมือนกับว่าคำfileนั้นถูกข้ามในไฟล์ stopwords ตอนนี้ที่นี่บิตเย็น: ถ้าผมปรับเปลี่ยนแฟ้มคำหยุดโดยการเปลี่ยนเดียวคำ / ตัวอักษรiในบรรทัดแรกเพื่อพยัญชนะอื่น ๆ นอกเหนือจากf, i, l, eแล้วคำสั่ง grep extensionsเดียวกันทำให้ผมมีผลแตกต่างกันและถูกต้องของ เกิดอะไรขึ้นที่นี่และฉันจะแก้ไขได้อย่างไร ฉันกำลังใช้ grep (BSD grep) 2.5.1-FreeBSD บนเครื่อง Mac OSX GNU bash รุ่น 4.4.12 …
10 grep  osx  freebsd 

3
วิธีการ grep สองบรรทัดจาก lshw?
ฉันต้องการหมายเลขซีเรียลของเมนบอร์ดและรุ่นผลิตภัณฑ์ของคอมพิวเตอร์ ฉันใช้ sudo lshw | grep -m1 serial: เพื่อ grep หมายเลขซีเรียล (เนื่องจากมีหลายเหตุการณ์ที่เกิดขึ้นของ "serial:" และสิ่งที่ฉันต้องการคือหมายเลขแรกฉันจะทำเช่นนี้และ grep พร้อมกันสำหรับ "product:" เช่นกันหรือไม่นอกจากนี้ยังมีผลิตภัณฑ์หลายรายการ และอันแรกก็คืออันที่ฉันต้องการอีกครั้ง lshw ส่งคืนสิ่งนี้: user@ubuntu:~$ sudo lshw ubuntu-pc description: Notebook product: 23252DG (LENOVO_MT_2325) vendor: LENOVO version: ThinkPad X230 serial: R9TWZVR width: 64 bits capabilities: smbios-2.7 dmi-2.7 vsyscall32 configuration: administrator_password=disabled chassis=notebook family=ThinkPad X230 power-on_password=disabled …

3
พฤติกรรมแปลก ๆ ของ“ ls -a | grep ^ \.”
ฉันต้องการแสดงเนื้อหาของ pwd และแสดงเฉพาะไฟล์ที่ขึ้นต้นด้วย dot ฉันพยายามls -a | grep ^\.แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสัญญาณออกจึงมีไฟล์ที่ไม่ได้ขึ้นต้นด้วย dot ตัวอย่างเช่น: Pictures .pip .pki .profile projects Public ฉันรู้ว่าฉันสามารถบรรลุสิ่งที่ฉันต้องการด้วยls -ld .*ฉันแค่อยากรู้เกี่ยวกับพฤติกรรมของ grep ซึ่งฉันไม่สามารถอธิบายได้

3
ฉันจะลบข้อความทั้งหมดระหว่างวงเล็บปีกกาในไฟล์ข้อความหลายบรรทัดได้อย่างไร
ตัวอย่าง: This is { the multiline text file } that wants { to be changed } anyway. ควรเป็น: This is that wants anyway. ฉันพบเธรดที่คล้ายกัน ในฟอรัม แต่ดูเหมือนว่าจะไม่สามารถใช้กับวงเล็บปีกกาแบบหลายบรรทัดได้ ถ้าเป็นไปได้ฉันต้องการวิธีการหนึ่งบรรทัดเช่นโซลูชันที่ใช้ grep, sed, awk ... เป็นต้น แก้ไข: โซลูชั่นดูเหมือนจะตกลง แต่ฉันได้สังเกตเห็นว่าไฟล์ต้นฉบับของฉันรวมถึงการทำเครื่องหมายวงเล็บปีกกา ดังนั้นฉันกำลังเปิดคำถามใหม่ ขอบคุณทุกคน: ฉันจะลบข้อความทั้งหมดระหว่างวงเล็บปีกกาแบบซ้อนในไฟล์ข้อความแบบหลายบรรทัดได้อย่างไร?

4
แทนที่สตริงที่มีอักขระขึ้นบรรทัดใหม่
ด้วยbashเปลือกในไฟล์ที่มีแถวเหมือนคนดังต่อไปนี้ first "line" <second>line and so on ฉันต้องการแทนที่ด้วยหนึ่งครั้งหรือมากกว่านั้น"line"\n<second>ด้วยother charactersและรับในแต่ละครั้ง: first other characters line and so on ดังนั้นผมจึงต้องเปลี่ยนสตริงทั้งที่มีตัวอักษรพิเศษเช่น"และ<และด้วยตัวอักษรขึ้นบรรทัดใหม่ หลังจากค้นหาคำตอบอื่น ๆ ฉันพบว่าsedสามารถยอมรับการขึ้นบรรทัดใหม่ทางด้านขวาของคำสั่ง (เช่นนั้นother charactersสตริง) แต่ไม่ใช่ทางด้านซ้าย มีวิธี (ง่ายกว่านี้ ) ในการรับผลลัพธ์นี้ด้วยsedหรือgrepไม่?

7
ฉันจะ "ผสาน" รูปแบบในบรรทัดเดียวได้อย่างไร
ฉันกำลังทำ grep และ sed และฉันได้รับไฟล์ 2 บรรทัดที่ฉันสนใจฉันจะรับบรรทัดเหล่านี้ในบรรทัดเดียวที่ลงท้ายด้วยอักขระบรรทัดใหม่ได้อย่างไร ตอนนี้ฉันได้รับ: pattern1 pattern2 ฉันอยากได้ pattern1 pattern2 \n

6
ทุบตีหาบรรทัดที่ขึ้นต้นด้วยสตริง
ฉันมีไฟล์หลายไฟล์และต้องการค้นหาว่าไฟล์ใดมีบรรทัดเรียงตามลำดับที่ขึ้นต้นด้วยสตริงที่แน่นอน ตัวอย่างเช่นสำหรับไฟล์ต่อไปนี้: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee มีมากกว่าหนึ่งบรรทัดที่ขึ้นต้นด้วย 'C' ดังนั้นฉันต้องการให้ไฟล์นี้ถูกค้นพบโดยคำสั่ง ตัวอย่างเช่นสำหรับไฟล์ต่อไปนี้: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd มีหนึ่งบรรทัดที่ขึ้นต้นด้วย 'C' เสมอฉันไม่ต้องการไฟล์นี้ ฉันคิดว่าจะใช้ a grepหรือ a sedแต่ฉันไม่รู้วิธีการใช้ อาจใช้ regexp ^C.*$^Cหรืออะไรทำนองนั้น ความคิดใด ๆ
10 bash  sed  grep  string 

3
grep เพื่อค้นหาอินสแตนซ์ของ“ Foo” ที่“ บาร์” ไม่ปรากฏภายใน 10 บรรทัด
สมมติว่าฉันต้องการค้นหาต้นไม้ทั้งหมดสำหรับไฟล์ CPP ทั้งหมดที่เกิด "Foo" ฉันอาจทำ: find . -name "*.cpp" | xargs grep "Foo" ตอนนี้สมมติว่าฉันต้องการแสดงเฉพาะอินสแตนซ์ที่มีสตริงอื่น ๆ กล่าวว่า "บาร์" ไม่ได้เกิดขึ้นภายใน 3 บรรทัดของผลลัพธ์ก่อนหน้า รับสองไฟล์: a.cpp 1 Foo 2 qwerty 3 qwerty b.cpp 1 Foo 2 Bar 3 qwerty ฉันต้องการสร้างการค้นหาทั่วไปที่พบ "Foo" จาก a.cpp แต่ "Foo" จาก b.cpp ไม่ มีวิธีการทำสิ่งนี้ในวิธีที่ค่อนข้างง่ายหรือไม่?
10 grep 

6
วิธีการรับหลายบรรทัดออกจากไฟล์โดย regex?
วิธีการรับหลายบรรทัดออกจากไฟล์โดย regex? ฉันมักจะต้องการรับหลายบรรทัด / แก้ไขหลายบรรทัดโดย regex กรณีตัวอย่าง: ฉันกำลังพยายามอ่านส่วนหนึ่งของไฟล์ XML / SGML (ไม่จำเป็นต้องมีรูปแบบที่ดีหรืออยู่ในรูปแบบที่สามารถคาดเดาได้ดังนั้น regex จะปลอดภัยกว่าตัวแยกวิเคราะห์ที่เหมาะสมนอกจากนี้ฉันอยากจะทำเช่นนี้ได้เล็กน้อย ไฟล์ที่ไม่มีโครงสร้างซึ่งรู้จักคำสำคัญเพียงบางคำ) ในเชลล์สคริปต์ (ทำงานบน Solaris และ Linux) ตัวอย่าง XML: <tag1> <tag2>bar</tag2> </tag1> <tag1> <tag2>foo</tag2> </tag1> จากนี้ฉันอยากจะอ่าน<tag1>มันถ้ามันมีfooบางแห่งในนั้น regex ที่ชอบ(<tag1>.*?foo.*?</tag1>)ควรให้ส่วนที่ถูกต้อง แต่เครื่องมือที่ชอบgrepและsedใช้ได้กับฉันในบรรทัดเดียวเท่านั้น ฉันจะได้รับ <tag1> <tag2>foo</tag2> </tag1> ในตัวอย่างนี้?
10 shell  sed  grep 

2
อะไรคือความแตกต่างระหว่าง“ * .pl” และ * .pl ใน grep? ทำไมการอ้างถึงเปลี่ยนผลลัพธ์?
อะไรคือความแตกต่างระหว่าง: grep "string" . -r --include *.pl และ grep "string" . -r --include "*.pl" หลังรวมถึงไฟล์ในไดเรกทอรีย่อยในขณะที่อดีตไม่ ทำไม?

3
นิพจน์ทั่วไปสำหรับค้นหาอักขระสองตัวใน Bash
ฉันกำลังมองหานิพจน์ทั่วไปที่ค้นหาการเกิดขึ้นของอักขระสองตัวในข้อความรายชื่อและอื่น ๆ บนบรรทัดคำสั่ง (Bash) หลักคำถาม : มีวิธีง่ายๆในการมองหาลำดับเช่นaa, ll, tttttฯลฯ ที่หนึ่งกำหนดนิพจน์ปกติที่จะมองหาที่ปรากฏ n ของตัวละครเดียวกันด้วย? สิ่งที่ฉันกำลังมองหาคือการบรรลุเป้าหมายในระดับพื้นฐานมาก ๆ บนบรรทัดคำสั่ง ใน Linux Shell หลังจากงานวิจัยบางอย่างฉันมาถึงคำตอบต่อไปนี้ - และคำถามที่เกิดจากพวกเขาดังนั้นพวกเขาเพียงแค่ให้คำแนะนำแก่ฉันว่าคำตอบอาจอยู่ที่ใด แต่: ก) (e) grep และปัญหาแบ็กสแลช grep 'a\{2\}' มองหา aa egrep'a{2}' มองหา aa คำถาม: ความจำเป็นของการตั้ง backlashes นั้นผูกพันกับคำสั่งที่ฉันใช้หรือไม่? ถ้าเป็นเช่นนั้นทุกคนสามารถให้คำแนะนำฉันกับฉันได้อย่างไรเมื่อใช้ (e) grep ที่นี่? b) ฉันพบคำตอบนี้ที่นี่สำหรับคำถามของฉันแม้ว่าจะไม่ใช่สิ่งที่ฉันกำลังมองหา: grep -E '(.)\1' filenameมองหารายการที่มีลักษณะเดียวกันที่ปรากฏมากกว่าหนึ่งครั้ง แต่ไม่ได้ถามบ่อยแค่ไหน ใกล้กับสิ่งที่ฉันกำลังมองหา แต่ฉันยังต้องการตั้งค่าการทำซ้ำจำนวนมาก …

2
“ grep -r foo *” และ“ grep -r foo”
เมื่อใช้ grep -r คุณสามารถค้นหาไฟล์ทั้งหมดด้วย * หรือ และดูเหมือนว่าจะกลับมาเหมือนเดิม แต่มันเหมือนกันจริงหรือ สมมติว่าฉันค้นหา "foo" จากนั้นฉันสามารถเขียนได้ grep -r foo * หรือ grep -r foo . ทุกคนจะพยายามอธิบายความแตกต่างระหว่าง และ *?
10 grep  wildcards 

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