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

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

3
ทำเครื่องหมายการเกิดขึ้นของคำหลักที่มีสีแตกต่างกัน
ฉันมีโปรแกรมที่แยกออกเป็นstdoutชอบ: [OK] Something is ok [OK] Something else is also ok [FAIL] This does not look good [FAIL] Neither does this [OK] At least this is fine เพื่อให้ง่ายขึ้นจุดที่ล้มเหลวจากผลลัพธ์ที่ฉันต้องการทำเครื่องหมายการเกิดขึ้นของคำหลักFAILด้วยสีแดงโดยไม่ละทิ้งข้อความอื่น ๆ มันจะดีถ้าฉันยังสามารถเน้นOKคำหลักด้วยสีเขียว :) การทำไพพ์เพื่อegrep --color FAILแสดงเฉพาะบรรทัดที่มีFAILคำหลักอยู่
13 grep  colors 

3
แบบฝึกหัด grep ออนไลน์ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน9 เดือนที่ผ่านมา มี grep tutorials ออนไลน์ที่มีเครื่องมือออนไลน์สำหรับการฝึกหัดหรือไม่? ตัวอย่างเช่นมีตัวอย่างข้อความที่กำหนดไว้ล่วงหน้าและได้รับการบอกว่ารูปแบบการค้นหาและอื่น ๆ ? มันจะเป็นเครื่องมือที่มีประโยชน์มากสำหรับการเรียนรู้ภาคปฏิบัติของ grep ในสภาพแวดล้อมที่คาดการณ์ได้

3
ฉันจะใช้ tee เพื่อเปลี่ยนเส้นทางไปยัง grep ได้อย่างไร
ฉันไม่ค่อยมีประสบการณ์ในการใช้เสื้อยืดดังนั้นฉันหวังว่านี่จะไม่ธรรมดา หลังจากที่ได้ดูหนึ่งในคำตอบที่จะคำถามนี้ฉันมาข้าม beheviour teeแปลก เพื่อให้ฉันออกบรรทัดแรกและบรรทัดที่พบฉันสามารถใช้สิ่งนี้: ps aux | tee >(head -n1) | grep syslog USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4 อย่างไรก็ตามครั้งแรกที่ฉันรันสิ่งนี้ (เป็น zsh) ผลลัพธ์อยู่ในลำดับที่ไม่ถูกต้องส่วนหัวคอลัมน์จะต่ำกว่าผลลัพธ์ grep (นี่ไม่ได้เกิดขึ้นอีกแล้ว) ดังนั้นฉันจึงพยายามสลับคำสั่งรอบ ๆ : ps aux | tee …

3
ฉันจะเปลี่ยนเส้นทางการจับคู่ไปยังไฟล์และไม่ตรงกับไฟล์อื่นได้อย่างไร
มีสคริปต์ / โปรแกรม / ยูทิลิตี้สำหรับความต้องการต่อไปนี้แล้วในวิธีที่ได้รับการปรับให้เหมาะสมหรือไม่? someCommand | tee >(grep "pattern" > LinesWhichMatch) | grep -v "pattern" > LinesWhichDoesNotMatch


3
regex ที่ถูกต้องไม่ทำงานใน grep
ฉันมี regex นี้: (?<=prefix).*$ ซึ่งส่งกลับอักขระใด ๆ ต่อไปนี้สตริง "คำนำหน้า" และทำงานได้ดีกับเอ็นจิน regex ออนไลน์ใด ๆ (เช่นhttps://regex101.com ) ปัญหาคือเมื่อฉันใช้ regex นั้นใน bash: grep '(?<=prefix).*$' <<< prefixSTRING มันไม่ตรงกับอะไรเลย ทำไม regex ไม่ทำงานกับ grep

2
การค้นหารายการสุดท้ายในบรรทัดโดยใช้ grep
ฉันพยายามที่จะใช้คำหรือวลีสุดท้ายโดยใช้ grep สำหรับรูปแบบเฉพาะ ในตัวอย่างนี้มันจะเป็นจากเครื่องหมายจุลภาคสุดท้ายถึงท้ายบรรทัด: Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value และผลลัพธ์ที่ต้องการสำหรับบรรทัดนั้นก็คือ "คุ้มค่ามาก" ทุกบรรทัดมีความยาวต่างกันเช่นกัน แต่ต้องมีเครื่องหมายจุลภาคหนึ่งคำก่อนหน้าเสมอ โดยทั่วไปฉันต้องการเพียงแค่ส่งออกจากเครื่องหมายจุลภาคล่าสุดไปยังจุดสิ้นสุดของบรรทัด ขอบคุณ!



7
วิธี grep เอาต์พุต netcat
ฉันพยายามที่จะ grep สตรีมข้อความสดจากnetcatแต่มันไม่ได้ผลสำหรับฉัน: netcat localhost 9090 | grep sender ไม่มีอะไรคืน แต่ฉันแน่ใจว่ามันควร ถ้าฉันเปลี่ยนเส้นทางnetcatผลลัพธ์ไปยังไฟล์และเพิ่มความล่าช้า (จำลองสภาพแวดล้อมจริง) - จากนั้นก็ใช้งานได้: $ (sleep 5; cat netcat_output; sleep 5) | grep sender {"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data": "shuttingdown":false},"sender":"xbmc"}} ฉันพยายามเพิ่ม--line-bufferedแต่ไม่ประสบความสำเร็จ ฉันทำอะไรผิด แก้ไข: ฉันสังเกตเห็นปัญหาเดียวกันกับsedผลลัพธ์ที่ว่างเปล่า แต่ตัวอย่างเช่นhexdumpแปลงข้อความเป็น hex live: $ netcat localhost 9090 | hexdump -C 00000000 7b 22 6a 73 6f 6e 72 70 …
13 grep  netcat 

3
ลบอักขระตัวสุดท้ายในคำ แต่ถ้าตัวละครนั้นอยู่ในนั้น - ในทุบตี
วิธีลบตัวอักขระสุดท้ายเฉพาะเมื่อมันอยู่ที่นั่น? การป้อนข้อมูล: OpenOffice.org/m openOffice.org/ozm Pers PFG ฟิล ศ. รับผิดชอบ Roonstr./m roonstr./ozm ผลลัพธ์ที่ต้องการ: OpenOffice.org openOffice.org Pers PFG ฟิล ศ รับผิดชอบ Roonstr roonstr ฉันเข้าใจแล้วจนถึงจุดที่เหลือเท่านั้น แต่น่าเสียดายที่คำสั่ง sed ล่าสุดยังลบตัวอักษรgด้วย: $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'

3
ฉันสามารถย่อตัวกรองนี้ให้สั้นลงซึ่งพบว่าขนาดของดิสก์เกิน 100G หรือไม่
เป้าหมายของฉันคือการได้รับแผ่นดิสก์มากกว่า 100G จาก lsblk ฉันใช้งานได้ แต่มันอึดอัดใจ ฉันค่อนข้างมั่นใจว่ามันสั้นลงได้ ไม่ว่าจะโดยการใช้บางอย่างที่แตกต่างจาก lsblk หรือฉันอาจกรองตัวเลขที่มนุษย์อ่านได้โดยตรงด้วย awk นี่คือสิ่งที่ฉันรวบรวม: lsblk | grep disk | awk '{print$1,$4}' | grep G | sed 's/.$//' | awk '{if($2>100)print$1}' ส่งเอาต์พุตเฉพาะส่วน sdx และ nvmexxx ของดิสก์ที่มีขนาดใหญ่กว่า 100G สิ่งที่ฉันต้องการ ฉันมีความสุขกับมัน แต่ฉันกระตือรือร้นที่จะเรียนรู้เพิ่มเติมจากคุณกูรู😉
12 awk  grep  disk  lsblk 

1
สัญลักษณ์แปลก ๆ บนหน้าจอเมื่อใช้ grep?
มีความคิดอะไรที่ทำให้เกิดสิ่งนี้ สิ่งเดียวที่แสดงคือรหัส ISO และพื้นที่ว่างโดยไม่ใช้ grep ซอฟต์แวร์ที่ใช้ คำสั่ง: ./trans --id --input /path/to/txt | grep ISO | grep [a-z] root@box /test # alias grep alias grep='grep --color=auto' root@box /test # type grep grep is aliased to `grep --color=auto' เอาท์พุทปกติ:

1
เหตุใดการจับคู่สตริง 1250 กับรูปแบบ 90k จึงช้า
สตริงของฉันเป็นเส้นทางไฟล์เช่นs/14/11/13/15/n7ce49B_235_25ed2d70.jpg; รูปแบบของฉันค่อนข้างเรียบง่ายเหมือนn7ce49B_.+กันหมด ฉันทำงานGNU grep 2.6.3ภายใต้Debian 6.0.10บนเซิร์ฟเวอร์Dell DL360G7 (ฉันพูดถึงเพียงให้ความรู้สึกของเครื่องนี้เต็มประสิทธิภาพ) ด้วย HDD 15k และคำสั่งนี้: time LC_ALL=C grep -E -f path_to_patterns_file path_to_strings_fileไม่สามารถทำให้เสร็จสมบูรณ์ - เซิร์ฟเวอร์แลกเปลี่ยนไม่ดีเกินไป ด้วยรูปแบบ 20k ใช้เวลานานกว่า 3 ชั่วโมง ดูเหมือนว่าไม่มีเหตุผลสำหรับฉัน ตามคำขอความคิดเห็นมีไฟล์: รูปแบบไฟล์เส้นทาง 20k หนึ่งอาจทดสอบและปรับจำนวนบรรทัดอินพุตและรูปแบบด้วย: xxd -p /dev/urandom | fold -sw 100 | head -n 1250 | grep -Ef <(xxd -p /dev/urandom | fold …
12 linux  grep 

2
ทำไม `grep -v 'ถึงไม่ทำงานอย่างที่คาดไว้
ฉันมีปัญหาแปลก ๆ เกี่ยวกับgrep -vข้อความค้นหา ให้ฉันอธิบาย: ในการแสดงการเชื่อมต่อฉันใช้who: $ who harry pts/0 2016-12-08 20:41 (192.168.0.1) james pts/1 2016-12-08 19:28 (192.168.0.1) timothy pts/2 2016-12-08 02:44 (192.168.0.1) กระแสttyของเทอร์มินัลของฉันคือpts/0 $ tty /dev/pts/0 $ tty | cut -f3-4 -d'/' pts/0 grep -v $(tty | cut -f3-4 -d'/')ผมพยายามที่จะไม่รวมการเชื่อมต่อของตัวเองโดยใช้ ผลลัพธ์ที่คาดหวังของคำสั่งนี้ควรจะเป็นwhoโดยไม่ต้องเชื่อมต่อของฉัน อย่างไรก็ตามผลลัพธ์ไม่คาดคิดมากที่สุด: $ who | grep -v $(tty | …
12 command-line  grep  tty 

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