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

grep เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ใช้สำหรับค้นหาข้อความ

6
grep เพื่อส่งคืนบรรทัด Nth และ Mth ก่อนและหลังการแข่งขัน
ฉันรู้ว่าด้วย grep ฉันสามารถใช้ฟิลด์-Aและ-Bดึงบรรทัดก่อนหน้าและถัดไปจากการแข่งขัน อย่างไรก็ตามพวกเขาดึงทุกบรรทัดระหว่างการแข่งขันโดยมีการระบุหลายบรรทัด grep -r -i -B 5 -A 5 "match" ผมอยากจะเพียง แต่ได้รับ 5 THสายก่อนการแข่งขันและ 5 THเส้นหลังการแข่งขันนอกเหนือไปจากเส้นตรงและไม่ได้รับสายระหว่าง มีวิธีการทำเช่นนี้กับgrep?
12 command-line  grep  awk 

5
ค้นหาไฟล์ที่เรียงลำดับอย่างมีประสิทธิภาพ
ฉันมีไฟล์ขนาดใหญ่ที่มีหนึ่งสตริงในแต่ละบรรทัด ฉันต้องการทราบว่าสตริงอยู่ในไฟล์อย่างรวดเร็วหรือไม่ เป็นการดีที่จะทำได้โดยใช้อัลกอริทึมชนิดสับแบบไบนารี Googling บางคนเปิดเผยlookคำสั่งด้วยการ-bตั้งค่าสถานะซึ่งสัญญาว่าจะค้นหาและส่งออกสตริงทั้งหมดที่เริ่มต้นด้วยคำนำหน้าที่กำหนดโดยใช้อัลกอริทึมการค้นหาแบบไบนารี โชคไม่ดีที่ดูเหมือนว่าจะทำงานไม่ถูกต้องและส่งคืนผลลัพธ์ที่เป็นโมฆะสำหรับสตริงที่ฉันรู้ว่าอยู่ในไฟล์ (พวกเขาถูกส่งคืนอย่างถูกต้องจากการgrepค้นหาที่เทียบเท่า) ไม่มีใครรู้จักยูทิลิตี้หรือกลยุทธ์อื่นในการค้นหาไฟล์นี้อย่างมีประสิทธิภาพ

4
Grep: เครื่องหมายดอกจัน (*) ไม่ได้ผลเสมอไป
หากฉัน grep เอกสารที่มีสิ่งต่อไปนี้: ThisExampleString ... สำหรับการแสดงออกThis*Stringหรือ*Stringไม่มีอะไรจะส่งคืน อย่างไรก็ตามThis*ส่งคืนบรรทัดข้างต้นตามที่คาดไว้ การแสดงออกถูกล้อมรอบด้วยเครื่องหมายคำพูดหรือไม่ไม่ต่างกัน ฉันคิดว่าเครื่องหมายดอกจันระบุอักขระไม่ทราบจำนวนเท่าใด? ทำไมมันใช้งานได้ก็ต่อเมื่อเริ่มแสดงออก? ถ้าเรื่องนี้มีจุดมุ่งหมายพฤติกรรมสิ่งที่ฉันจะใช้แทนการแสดงออกThis*Stringและ*String?

4
คุณจะนับคำที่เกิดขึ้นในไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันได้อย่างไร
คุณจะนับคำที่เกิดขึ้นในไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันได้อย่างไร - และไดเรกทอรีย่อย (?) ฉันได้อ่านสิ่งนี้แล้วคุณจะใช้grep; คำสั่งที่แน่นอนคืออะไร? นอกจากนี้ยังสามารถใช้คำสั่งข้างต้นได้หรือไม่


3
ทำไม grep + regex ของฉันไม่ทำงาน
ฉันเพิ่งตัดสินใจว่าเพียงพอก็พอ - ฉันจะเรียนรู้การใช้ grep อย่างคล่องแคล่ว มันใช้เวลาทั้งหมดสามชั่วโมงและฉันก็นิ่งงันกับปัญหาของเล่นนี้ ฉันกำลังซิงค์อาร์เรย์ RAID5 /proc/mdstatความคืบหน้าของการที่สามารถตรวจสอบได้โดยการอ่าน ผลลัพธ์ของcat /proc/mdstatจะแสดงด้านล่าง $ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid5 sda4[0] sdb4[1] sdc4[2] 5858765824 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] [=============>.......] resync = 67.3% (1972073120/2929382912) finish=205.7min speed=77537K/sec …
10 grep 

2
ด้วยผลลัพธ์ของ grep -n ฉันจะเปิด vim ในบรรทัดนั้นได้อย่างไร (ใช้คีย์บอร์ดเท่านั้น)
เมื่อฉันเรียกใช้grep "keyword" -nและรับรายการผลลัพธ์ต่อไปนี้: a/b/c:10: keyword a/b/c:70: keyword a/b/d:50: keyword ฉันจะเปิดไฟล์ใดไฟล์หนึ่ง (พูดถึงลำดับที่ 2 ในรายการ) ในบรรทัดที่พบได้อย่างไร ตอนนี้ฉันเพิ่งคัดลอกผลลัพธ์โดยใช้เมาส์แล้วคัดลอกหลังจากvimนั้นเพิ่ม+ด้วยหมายเลขบรรทัดที่ฉันคัดลอก (หมายถึงฉันเขียนvim a/b/c +70โดยใช้เมาส์คัดลอกเพื่อรับชื่อไฟล์และอีกหนึ่งสำเนาเมาส์เพื่อรับหมายเลขบรรทัด [หรือฉันเพิ่งคัดลอกด้วยมือเมื่อสั้นพอ]) มีวิธีการทำด้วยแป้นพิมพ์ลัดหรือไม่?

2
ใช้ AWK เพื่อรับคอลัมน์ที่สอง
ฉันดูเหมือนจะไม่ได้รับคำสั่ง awk เพื่อรับคอลัมน์ที่สองของข้อมูล รหัสทุบตี: filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt) printf "$filter_data \n" ตัวแปร $ filter เป็นค่าของ Download หรือ Upload ที่ถูกส่งเข้าสู่เชลล์สคริปต์ ดังนั้น awk ใช้คำว่า Download หรือ Upload เพื่อค้นหาแถวที่ถูกต้อง เนื้อหาของไฟล์คือ: Testing download speed................................................................................ Download: 51.13 Mbit/s Testing upload speed................................................................................................ Upload: 57.38 Mbit/s ฉันพยายามที่จะได้รับเพียงตัวเลขและไม่ได้อะไรอื่นอดีตและ51.1357.38
9 bash  grep  sed  awk 

2
จะใช้ grep output เป็นพา ธ ของ cd ได้อย่างไร?
ฉันจะไพพ์grepเอาต์พุตเป็นอาร์กิวเมนต์ของcdคำสั่งได้อย่างไร ตัวอย่างเช่น: [root@xxx xxx]# pip install django | grep '/usr.*' Requirement already satisfied (use --upgrade to upgrade): django in /usr/lib64/python2.7/site-packages นี่/usr/lib64/python2.7/site-packagesคือไฮไลต์และฉันต้องการผ่านสายcdนี้

4
เปลี่ยนทิศทางเอาต์พุตไปที่ไฟล์จากคำสั่ง piping grep
ฉันกำลังทำงานนี้: cat /dev/urandom|hexdump| grep -i "ffff f" > random และฉันไม่ได้อะไรเลยในไฟล์randomมันยังคงมีความยาวเป็นศูนย์หลังจากคำสั่งถูกขัดจังหวะ จะทำให้มันเขียนออกไปยังไฟล์ได้อย่างไร? ฉันต้องเขียนผลลัพธ์ไปยังไฟล์ซึ่งควรมีข้อมูลผลลัพธ์เช่นนี้ 021bc40 7724 d4f5 59ec bcbb ffff fd26 ab3c 9b7c 03a9100 b3a5 8601 fa33 ffff f23c 4326 2e7f 0c8a 0449810 e459 d5af 4e11 ffff fc55 8660 9efb 3c9b

1
Grep -E, Sed -E - ประสิทธิภาพต่ำเมื่อใช้ '[x] {1,9999}' แต่ทำไม?
เมื่อgrepหรือsedใช้กับตัวเลือก--extended-regexpและรูปแบบ{1,9999}เป็นส่วนหนึ่งของ regexp ที่ใช้ประสิทธิภาพของคำสั่งเหล่านี้จะต่ำ เพื่อให้ชัดเจนยิ่งขึ้นมีการทดสอบด้านล่างสองสามข้อ [1] [2] ผลการดำเนินงานของญาติgrep -E, egrepและsed -Eเกือบจะเท่ากันดังนั้นเฉพาะการทดสอบที่ได้ทำกับgrep -Eที่มีให้ ทดสอบ 1 $ time grep -E '[0-9]{1,99}' < /dev/null real 0m0.002s ทดสอบ 2 $ time grep -E '[0-9]{1,9999}' < /dev/null > real 0m0.494s ทดสอบ 3 $ time grep -E '[0123456789] {1,9999}' </ dev / null > 21m43.947s จริง ทดสอบ …

5
วิธีรับข้อความจากช่วงวันที่โดยใช้ grep / sed ในไฟล์ข้อความขนาดใหญ่
ฉันมีข้อความไฟล์ใหญ่ (เกือบ 3GB) - มันเป็นไฟล์บันทึก ฉันต้องการรับบรรทัดข้อความที่ตรงกับช่วงวันที่จากไฟล์นี้ตั้งแต่วันที่ 13 กรกฎาคมถึง 19 กรกฎาคม รูปแบบบันทึกของฉันคือ: 2016-07-12 < ?xml version> 2016-07-13 < ?xml version> 2016-07-18 < ?xml version> 2016-07-18 < ?xml version> 2016-07-19 < ?xml version> 2016-07-20 < ?xml version> sample text sample text sample text sample text sample text sample text 2016-07-20 < ?xml …

2
จำกัด เอาต์พุต grep เป็นบรรทัดสั้น ๆ
ฉันมักใช้ grep เพื่อค้นหาไฟล์ที่มีรายการบางรายการเช่นนี้: grep -R 'MyClassName' สิ่งที่ดีคือมันคืนไฟล์เนื้อหาและทำเครื่องหมายสตริงที่พบเป็นสีแดง สิ่งที่ไม่ดีคือฉันยังมีไฟล์ขนาดใหญ่ที่เขียนข้อความทั้งหมดในบรรทัดเดียวขนาดใหญ่ ตอนนี้ grep เอาต์พุตมากเกินไปเมื่อค้นหาข้อความภายในไฟล์ขนาดใหญ่เหล่านั้น มีวิธี จำกัด ผลลัพธ์ให้เช่น 5 คำไปทางซ้ายและไปทางขวาหรือไม่ หรืออาจ จำกัด ผลลัพธ์ให้เหลือ 30 ตัวอักษรไปทางซ้ายและไปทางขวา?

3
ลบบรรทัดทั้งหมดที่มีแบ็กสแลชจากไฟล์ข้อความ
ฉันมีไฟล์ที่มีเนื้อหาเช่นนี้: apple b\all cat \34 egg ฉันต้องการลบบรรทัดทั้งหมดที่มีแบ็กสแลช ฉันพยายามใช้ sed '/\/d' pdataf.txt แต่มันไม่ทำงาน ฉันควรลองทำอะไร

5
ฉันต้องการความช่วยเหลือเกี่ยวกับ Grep เพื่อเริ่มต้นในส่วน
ฉันมีไฟล์ข้อความที่ฉันต้องการ grep ส่วนหนึ่งของรหัสจาก เป้าหมายที่ฉันพยายามบรรลุคือเริ่มมุมมองที่บรรทัดหนึ่งและจากนั้นสามารถอ่านอะไรด้านล่างได้ ตัวอย่างเช่น. ในข้อความด้านล่างฉันจะดูไฟล์ข้อความที่จุดเริ่มต้นของสีเหลืองได้อย่างไร ฉันต้องการดูเนื้อหาของ "สีเหลือง" รวมถึงทุกสิ่งที่อยู่ข้างใต้โดยไม่คำนึงถึงเนื้อหานั้น green blue cyan magenta purple brown yellow red orange more orange more blue this is enough

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