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

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

3
grep: แบ็กสแลชต่อท้าย
ฉันต้องการจะทำ grep \resources\สำหรับ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันได้พยายาม: grep \resources\ grep \\resources\\ grep "\resources\" grep "\\resources\\" ไม่มีของเหล่านี้ทำงาน

1
รูปแบบ. gitignore เทียบเท่ากับ regex (ใหญ่ | เล็ก) (รัฐ | เมือง) - [0-9] * \. csv
ฉันมี regex ฉันติดอยู่ในของฉัน.gitignoreคล้ายกับ: (Big|Small)(State|City)-[0-9]*\.csv มันไม่ได้ทำงานเพื่อให้ผมทดสอบกับRegexLab.NET จากนั้นผมก็พบgitignoreหน้าคนที่ทำให้ฉันได้เรียนรู้ว่า gitignore ไม่ได้ใช้ regexes แต่fnmatch (3) อย่างไรก็ตาม fnmatch มันดูเหมือนจะไม่เท่ากับกลุ่มจับภาพ สิ่งนี้เป็นไปได้หรือฉันต้องการแบ่งเป็นสามบรรทัด?

2
ขอบเขตคำ Grep
เอกสารแนบกับ GNU: ‘\<’ Match the empty string at the beginning of word. ‘\>’ Match the empty string at the end of word. / etc / fstab ของฉันมีลักษณะเช่นนี้: /dev/sdb1 /media/fresh ext2 defaults 0 0 ฉันต้องการให้ grep คืนค่า TRUE / FALSE สำหรับการมีอยู่ของ / media / fresh ผมพยายามที่จะใช้\<และ\>แต่มันก็ไม่ได้ทำงาน ทำไม? egrep '\</media/fresh\>' /etc/fstab การแก้ปัญหา: …

2
Bash regex group capture
ฉันพยายามจับคู่ค่าตัวอักษรและตัวเลขหลายตัว (ตัวเลขนี้อาจแตกต่างกันไป) จากสตริงและบันทึกลงในอาร์เรย์กลุ่มการจับภาพทุบตี อย่างไรก็ตามฉันได้รับนัดแรกเท่านั้น: mystring1='<link rel="self" href="/unix//api/clouds/1/instances/1BBBBBB"/> dsf <link rel="self" href="/unix//api/clouds/1/instances/2AAAAAAA"/>' regex='/instances/([A-Z0-9]+)' [[ $mystring1 =~ $regex ]] echo ${BASH_REMATCH[1]} 1BBBBBB echo ${BASH_REMATCH[2]} อย่างที่คุณเห็นมันตรงกับค่าแรกที่ฉันกำลังค้นหา แต่ไม่ใช่ค่าที่สอง

7
การแข่งขันแบบไม่โลภกับ SED regex (เลียนแบบ perl's. *?)
ฉันต้องการใช้sedที่จะเปลี่ยนอะไรในสตริงระหว่างครั้งแรกABและครั้งแรกเกิดAC(รวม) XXXด้วย สำหรับตัวอย่างเช่นผมมีสายนี้ (สตริงนี้เหมาะสำหรับการทดสอบเท่านั้น): ssABteAstACABnnACss ssXXXABnnACssและฉันต้องการผลผลิตที่คล้ายกันนี้: ฉันทำสิ่งนี้กับperl: $ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/' ssXXXABnnACss sedแต่ฉันต้องการที่จะใช้มันกับ ต่อไปนี้ (ใช้ regex ที่เข้ากันได้กับ Perl) ไม่ทำงาน: $ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/' ssXXXss



2
การค้นหาแบบคำนึงถึงขนาดตัวพิมพ์ใน awk
ฉันต้องการค้นหาคำหลักที่ใช้ awk แต่ฉันต้องการทำการค้นหาแบบตรงตามตัวพิมพ์ใหญ่ - เล็ก (ไม่ต้องตรงตามตัวพิมพ์ใหญ่ - เล็ก) ฉันคิดว่าวิธีที่ดีที่สุดคือการใช้ทั้งคำค้นหา ("คำสำคัญ") และบรรทัดเป้าหมายที่ awk อ่านพร้อมกัน จากคำถามนี้ฉันจะใช้toupperพิมพ์เป็นตัวพิมพ์ใหญ่ทั้งหมดได้อย่างไร แต่ฉันไม่รู้วิธีใช้ในการจับคู่เพราะคำตอบนั้นแสดงการพิมพ์และไม่ปล่อยให้ตัวพิมพ์ใหญ่เป็นตัวแปร นี่คือตัวอย่างที่ได้รับข้อมูลนี้: blablabla &&&Key Word&&& I want all these text and numbers 123 and chars !"£$%& as output &&&KEY WORD&&& blablabla ฉันต้องการผลลัพธ์นี้: I want all these text and numbers 123 and chars !"£$%& as output นี่คือสิ่งที่ฉันมี …

1
แทนที่ข้อความด้วย sed และเก็บส่วนหนึ่งของข้อความต้นฉบับ
ฉันพยายามแปลง <id>1</id> <Name>ENTERPRISE RESOURCE PLANNING</Name> ไปที่: <column name="id">1</column> <column name="Name">ENTERPRISE RESOURCE PLANNING</column> ฉันกำลังสมมติว่าเครื่องมือที่ดีที่สุดสำหรับงานจะเป็นsedอย่างไร แต่ฉันไม่สามารถหาวิธีที่จะเก็บส่วนของข้อความต้นฉบับในส่วนแทนที่ ถ้าฉันทำ: $ sed -i 's/<.*>.*<.*>/<column name="\\1">\\2<\/column>/g' filename.xml ผลลัพธ์คือ: <column name="\1">\2</column> <column name="\1">\2</column> หรือทำคล้ายกันจากภายในviมันจะออกผลลัพธ์: <column name=""></column> <column name=""></column> ฉันจะทำให้เป็นเช่นนั้นได้\1และ\2เปลี่ยนกลับไปเป็นค่าดั้งเดิมได้อย่างไร

3
rsync ไฟล์บางไฟล์ไม่รวมส่วนที่เหลือโดยไม่สนใจ. svn / directory ซ้ำ
ฉันใช้rsyncเพื่อคัดลอกไฟล์บางไฟล์จากการแชร์ไปยังไฟล์อื่น ฉันจำเป็นต้อง: ลบไฟล์ที่ปลายทางที่ถูกลบออกจากจุดกำเนิด ซิงค์.phpและ.jsไฟล์เท่านั้น ยกเว้นไฟล์ประเภทอื่นทุกประเภท อย่าลบ.svn/ไดเรกทอรีที่ปลายทาง ถ้าฉันใช้สิ่งนี้: rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origin /destination จากนั้นrsyncจะไม่เรียกซ้ำเนื่องจากexclude="*"ไม่รวมไฟล์ทั้งหมด แต่ยังรวมถึงโฟลเดอร์ ถ้าฉันเพิ่ม--include="*/"แล้ว.svn/ไดเรกทอรีจะถูกลบ (รวมอยู่ด้วย) ฉันจะแก้ไขปัญหานี้ได้อย่างไร? uname -a: Linux tux 3.9.2-1-ARCH # 1 SMP PREEMPT Sat 11 พฤษภาคม 20:31:08 CEST 2013 x86_64 GNU / Linux rsync รุ่น: rsync 3.0.9-6

3
การทำซ้ำ awk {n} ไม่ทำงาน
ฉันพยายามพิมพ์บรรทัดโดยใช้สัญลักษณ์การทำซ้ำ {n} แต่มันไม่ทำงาน สำหรับ. เช่นฉันต้องการพิมพ์ทุกบรรทัดที่มีความยาว 4 อักขระ awk '/^.{4}$/' test_data รหัสด้านบนไม่ได้ทำการพิมพ์นั้นจะแก้ไขได้อย่างไรเพื่อที่ฉันจะสามารถใช้สัญลักษณ์ซ้ำได้? ฉันรู้ว่าทางเลือกเช่นawk '/^....$/' test_dataและawk 'length ==3 ' test_data

1
วิธีการ“ grep” สำหรับความยาวบรรทัด * ไม่ใช่ * ในช่วงที่กำหนด
หมายเหตุ:คำถามนี้เป็นส่วนเติมเต็มของคำถาม & คำตอบนี้: "grep" สำหรับความยาวบรรทัดในช่วงที่กำหนดได้อย่างไร เราจะ grep สำหรับบรรทัดที่มีน้อยกว่า 8 หรือมากกว่า 63 ตัวอักษรได้อย่างไรไม่มีที่มีมากกว่าแปดและน้อยกว่า 63 ตัว? ดังนั้นการนับจำนวนอักขระที่ยอมรับได้อาจเป็น ... 7 6 5 4 3 2 1 0 ...และ... 64 65 66 67 ...

4
ค้นหาข้อความระหว่างอักขระหรือสตริงที่ระบุสองตัว
พูดว่าฉันมีสายเช่นนี้: *[234]* *[23]* *[1453]* โดยที่*แสดงถึงสตริงใด ๆ (ยกเว้นสตริงของฟอร์ม[number]) ฉันจะแยกวิเคราะห์บรรทัดเหล่านี้ด้วยยูทิลิตีบรรทัดคำสั่งและแยกตัวเลขระหว่างวงเล็บได้อย่างไร มากกว่าปกติซึ่งเครื่องมือเหล่านี้cut, sed, grepหรือawkจะเป็นที่เหมาะสมสำหรับงานดังกล่าวหรือไม่

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


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