คำถามติดแท็ก regular-expression

นิพจน์ทั่วไปเป็นวิธีการจับคู่รูปแบบของอักขระภายในสตริง

2
ไวยากรณ์ของ ls --hide = และ ls --ignore =
ls --hideและls --ignoreให้ความเป็นไปได้ที่จะปล่อยไฟล์ที่กำหนดไว้ผ่านการแสดงออกปกติที่กำหนดไว้หลังจาก--ignore=ส่วนหนึ่ง -a, -Aทำให้หลังแน่ใจว่าตัวเลือกนี้ไม่ปิดทาง คำสั่งmanและinfoหน้าพูดถึงนิพจน์ปกติ คำถาม : ซึ่งสัญลักษณ์หรือนิพจน์ปกติได้รับการสนับสนุนในและls --hide=ls --ignore= ฉันพบว่า* $ ?ดูเหมือนจะได้รับการสนับสนุนเช่นเดียวกับ POSIX Bracket Expressions แต่ดูเหมือนว่ามันจะไม่ทำงานอย่างถูกต้องตลอดเวลาและเป็นเกมแห่งการลองผิดลองถูกสำหรับฉัน ฉันคิดถึงสิ่งที่สำคัญที่นี่หรือไม่?

2
grep: แสดงชื่อไฟล์หนึ่งครั้งจากนั้นแสดงบริบทด้วยหมายเลขบรรทัด
ซอร์สโค้ดของเรามีรหัสข้อผิดพลาดกระจายอยู่ทั่วไป การค้นหามันเป็นเรื่องง่ายด้วย grep แต่ฉันต้องการฟังก์ชั่นทุบตีfind_codeที่ฉันสามารถดำเนินการ (เช่น. find_code ####) ซึ่งจะให้ผลลัพธ์ตามบรรทัดเหล่านี้: /home/user/path/to/source.c 85 imagine this is code 86 this is more code 87 { 88 nicely indented 89 errorCode = 1111 90 that's the line that matched! 91 ok this block is ending 92 } 93 } นี่คือสิ่งที่ฉันมีในปัจจุบัน: find_code() { # "= " …

2
จะใช้ regex เป็นตัวคั่นฟิลด์ใน awk ได้อย่างไร
ฉันพยายามที่จะใช้ regex เป็น seperator awkในสนาม จากการอ่านของฉันนี้เป็นไปได้ แต่ฉันไม่สามารถรับไวยากรณ์ที่ถูกต้อง rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }' awk: cmd. line:1: { FS awk: cmd. line:1: ^ unexpected newline or end of string คิด? เป้าหมายหากไม่ได้รับการยกเว้นคือการได้รับรายชื่อซอฟต์แวร์ที่ไม่มีหมายเลขเวอร์ชั่น

2
vim: ใช้สตริงจากการค้นหาในคำสั่งแทนที่
ฉันมักใช้/คำสั่งการค้นหาเป็นกลุ่มเพื่อตรวจสอบนิพจน์ปกติของฉัน (เพื่อดูว่าตรงกับอะไร) หลังจากนั้นฉันมักจะใช้:%sคำสั่งแทนที่โดยที่ฉันใช้ regexp จากการค้นหาเป็นสตริงที่จะถูกแทนที่เช่นฉันแรกมองหาสตริงดังกล่าว: /TP-\(\d\{5\}\)-DD-\d\{3\} มันตรงกับสิ่งที่ฉันต้องการดังนั้นฉันจะแทนที่ของฉัน: :%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g แต่ฉันต้องเขียน regexp ทั้งหมดอีกครั้งที่นี่ โดยปกติ regexp นั้นยาวกว่ามากนั่นคือสาเหตุที่ฉันกำลังมองหาวิธีแก้ปัญหา: มีทางลัดหรือสคริปต์ vim สำหรับวางรูปแบบการค้นหานั้นลงในคำสั่ง replace โดยตรงหรือไม่? ฉันใช้เป็นกลุ่มใน terminal (ไม่มี gvim)


3
แยกไฟล์ข้อความตามนิพจน์ปกติ
ฉันมีไฟล์ข้อความที่ฉันต้องการแยกออกเป็น 64 ส่วนที่ไม่เท่ากันตาม 64 hexagrams ของ Yi Jing เนื่องจากเนื้อเรื่องสำหรับแต่ละแฉกเริ่มต้นด้วยหลักบางจุดระยะเวลาและบรรทัดใหม่สองบรรทัด regex ควรเขียนง่าย แต่ฉันจะแยกไฟล์ข้อความเป็น 64 ไฟล์ใหม่ตาม regex นี้ได้อย่างไร ดูเหมือนว่าเป็นงานที่ต้องทำperlอีกมาก แต่อาจจะมีวิธีที่ชัดเจนกว่าที่ฉันเพิ่งหายไปโดยสิ้นเชิง

2
การใช้ grep กับแฟล็ก --exclude-dir เพื่อแยกหลายไดเร็กทอรี
ฉันกำลังค้นหาแอปพลิเคชัน Ruby on Rails สำหรับคำที่ใช้grepบน OSX และฉันต้องการแยกไดเรกทอรีที่ตรงกับรูปแบบบางอย่าง ฉันใช้คำสั่งต่อไปนี้: grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset' คำสั่งนี้ไม่ได้ทำในสิ่งที่ฉันคิดว่ามันจะทำ นี่คือวิธีที่ฉันคิดว่ามันจะทำงาน: การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ n - พิมพ์หมายเลขบรรทัดที่พบรูปแบบ R - ค้นหาซ้ำ w - ฉันต้องการทั้งคำเท่านั้น - เช่นจับคู่ "โดยตรง" แต่ไม่ใช่ "ไดเรกทอรี" -E - ใช้นิพจน์ทั่วไปที่ขยายเพิ่ม 'direct' - นิพจน์ทั่วไปที่ฉันต้องการจับคู่ . - ค้นหาในไดเรกทอรีปัจจุบัน --exclude-dir -E 'git | log | asset' - …

2
การแทนที่การเกิดขึ้นครั้งแรกของรูปแบบในบรรทัดสำหรับทุกบรรทัดในไฟล์ที่มี sed
เป็นไปได้ที่จะทำในหนึ่งซับ? ฉันมีผลลัพธ์เช่นนี้ "First line" - Description " Second line" - Description "Third line" - Description " Fourth line" - Description อินพุตนี้สร้างขึ้นโดยอัตโนมัติ ฉันต้องการแทนที่การเกิดขึ้นครั้งแรกของ"(เครื่องหมายคำพูด + ช่องว่าง) ด้วย"(เครื่องหมายคำพูด) สำหรับแต่ละบรรทัด ถ้าฉันใช้การทดแทนทั่วโลกมันก็จะเปลี่ยนทุกอย่างที่เกิดขึ้นline" -เป็นline"-ดังนั้นฉันสงสัยว่ามันเป็นไปได้ที่จะใช้สายการบินเดียวที่จะทำให้สำเร็จ ฉันได้ลองใช้^แบบนี้ sed -r ':a;N;$!ba;s/(\^\" )/\"/g' แต่มันไม่ทำงานมันไม่ได้แทนที่อะไรเลย ฉันเหนื่อย sed -r ':a;N;$!ba;s/(^|\" )/\"/g' และมันจะแทนที่เหตุการณ์ที่เกิดขึ้นทั้งหมด ฉันเพิ่งเริ่มใช้ sed ดังนั้นฉันไม่รู้จริง ๆ ว่าฉันทำอะไรผิด ฉันหายไปนี่อะไร

3
bash รองรับการอ้างอิงกลับในการขยายพารามิเตอร์หรือไม่
ฉันมีชื่อตัวแปรdescrซึ่งสามารถมีสตริงBlah: -> r1-ae0-2 / [123], -> s7-Gi0-0-1:1-US / Fooฯลฯ ฉันต้องการที่จะได้รับ-> r1-ae0-2, -> s7-Gi0-0-1:1-USส่วนหนึ่งมาจากสตริง ในขณะนี้ฉันใช้descr=$(grep -oP '\->\s*\S+' <<< "$descr"สำหรับสิ่งนี้ มีวิธีที่ดีกว่าในการทำเช่นนี้? เป็นไปได้ไหมที่จะทำเช่นนี้กับการขยายพารามิเตอร์

3
จับคู่คำที่มีอักขระเกิน a-zA-Z
เพื่อให้ตรงกับคำที่สามารถใช้ได้ \v(\w+) จากความช่วยเหลือเป็นกลุ่ม:h \w: \ w อักขระคำ: [0-9A-Za-z_] สิ่งนี้ทำงานได้อย่างตรงตามที่อธิบายไว้ในคู่มือ แต่ผมต้องการที่จะตรงกับคำที่ประกอบด้วยอักขระเกินa-zเช่น prästgården การจับคู่นิพจน์ทั่วไป\v(\w+)กับ prästgårdenให้ผลเป็นสามการแข่งขันแทน: prästgården ^^ ^^^ ^^^^ จะจับคู่คำที่มีตัวอักษรเกินได้a-zอย่างไร สถานที่ตั้งของฉันถูกตั้งค่าเป็นภาษาอังกฤษและถ้าเป็นไปได้ฉันต้องการที่จะให้มันเป็นอย่างนั้น แก้ไข:คำอาจไม่อยู่ในสถานที่เดียวเช่น prästgården treść

2
sed หนึ่งซับเพื่อลบทุกอย่างระหว่างวงเล็บหรือไม่
ฉันกำลังทำงานกับข้อความที่เต็มไปด้วยสิ่งของระหว่างวงเล็บ [] ที่ฉันไม่ต้องการ เนื่องจากฉันสามารถลบเครื่องหมายวงเล็บด้วยตัวเองฉันไม่ต้องการซับในที่จะทำเพื่อฉัน แต่ฉันต้องการซับที่จะลบทุกอย่างระหว่างพวกเขา แล้ววงเล็บ () แทนที่จะเป็นวงเล็บคืออะไร

2
การอ้างอิงรูปแบบการค้นหาน้อยลงที่ใด
ฉันจะหาข้อมูลอ้างอิงสำหรับlessรูปแบบการค้นหา regex ได้จากที่ใด ฉันต้องการค้นหาไฟล์ด้วยการlessใช้\dเพื่อค้นหาตัวเลข แต่มันดูเหมือนจะไม่เข้าใจสัญลักษณ์แทนนี้ ฉันพยายามค้นหาการอ้างอิงสำหรับlessรูปแบบ regex แต่ไม่พบสิ่งใดไม่ใช่หน้าคนและไม่ได้อยู่บนอินเทอร์เน็ต

4
วิธีการตรวจสอบจุดสิ้นสุดของบรรทัดด้วย sed
sedฉันกำลังมองหาวิธีการที่จะดำเนินการเพียงการเปลี่ยนเมื่อตัวละครสุดท้ายคือขึ้นบรรทัดใหม่โดยใช้ ตัวอย่างเช่น lettersAtEndOfLine ถูกแทนที่ แต่นี่ไม่ใช่: lettersWithCharacterAfter& เนื่องจากsedทำงานไม่ดีกับการขึ้นบรรทัดใหม่จึงไม่ง่ายเหมือน $ sed -E "s/[a-zA-Z]*\n/replace/" file.txt สิ่งนี้จะสำเร็จได้อย่างไร


2
Lookbehind เชิงลบ / การยืนยันล่วงหน้าใน Linux เพจเจอร์น้อย (หรือเป็นกลุ่ม)
ฉันต้องการที่จะหาทุกกรณีของ "ดัชนี" ไม่ได้ตามมาด้วย .php lessในการเข้าสู่ระบบโดยใช้ /index(?!\.php)ไม่ทำงาน, ไม่เป็นผล. เป็นไปได้ไหม regex มีค่าน้อยกว่าและเป็นกลุ่ม (แตกต่างกันอย่างไร) สิ่งนี้เป็นไปไม่ได้ด้วยไลบรารี regex ของแอปพลิเคชันเหล่านี้หรือไม่

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