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

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

4
วิธีการ grep สำหรับท่อ |
ฉันจะ grep สำหรับบรรทัดที่มีอักขระไพพ์|หรือตัวอักษร>: files content: |this is test where is > this is none ตอนนี้สิ่งที่ฉันต้องการใช้คำสั่ง grep คือ grep -iE "<some expression>" file_name เอาท์พุท: |this is test where is >

7
จะลดความโลภของนิพจน์ทั่วไปใน AWK ได้อย่างไร?
ฉันต้องการจะทำรูปแบบไม่โลภ (regular expression) awkการจับคู่ใน นี่คือตัวอย่าง: echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }' เป็นไปได้ไหมที่จะเขียนนิพจน์ทั่วไปที่เลือกสตริงที่สั้นกว่า? @article{gjn, แทนที่จะเป็นสายยาวนี้: @article{gjn, Author = {Grzegorz J. Nalepa}, ฉันต้องการผลลัพธ์นี้: Author = {Grzegorz J. Nalepa}, ฉันมีตัวอย่างอื่น: echo " ,บทความ {gjn, ผู้แต่ง = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] …

4
grep สำหรับสตริงตัวอักษรผสมตัวเลขที่มีความยาวใด ๆ กับโคลอนในแต่ละด้าน
วิธีที่คุณจะ grep สำหรับสตริงและตัวเลข 1 ถึง 50 ตัวอักษร (นึกคิด, ความยาวใด ๆ ที่จะทำงานมากเกินไป) กับลำไส้ใหญ่ในแต่ละด้าน - :shopping:ผลโดยทั่วไปจะเป็นทุกสายที่มีสตริง จนถึงตอนนี้ฉันได้รับรหัสด้านล่าง (ฉันลองใช้รูปแบบที่หลากหลาย) ซึ่งใช้งานไม่ได้: grep ':[[:alnum:]]{1,100}:' ~/x.txt

2
หลามเทียบเท่าของ grep -v คืออะไร?
grep -vผมชอบ ฉันจะใช้มันตลอดเวลา. แต่ฉันกำลังทำการประมวลผลข้อความในหลามและมีสิ่งสำคัญอย่างหนึ่งที่ฉันขาด โดยปกติฉันใช้grep -vเพื่อลบสิ่งที่ไม่เกี่ยวข้องออกจากข้อความ ตัวอย่างเช่น $ grep -v '[a-z]' # (I manually review this output to confirm that I don't want those lines) $ grep '[a-z]' > linesiwanted แต่ฉันจะจับคู่ regex ใน Python ได้อย่างไร ตัวอย่างเช่นการเติมเต็มของ\w?

2
find คำสั่งที่มีตัวนับ regex เช่น {1,2}
ฉันพยายามสร้างสตริงคำสั่ง find ที่จะค้นหาไฟล์ทั้งหมดที่ลงท้ายด้วยหมายเลข 1-99 แต่ไม่รวมไฟล์อื่นทั้งหมด เช่นฉันต้องการค้นหาmyfile1 myfile99แต่ไม่ใช่myfile456และไม่ใช่myfilebackup regex ที่ฉันคิดคือคือmyfile[1-9]{1,2}แต่ฉันไม่สามารถทำงานกับการค้นหา find . -regex '.*myfile[0-9]{1,2}' หรือ find . -iname 'myfile[0-9]{1,2}' จากสิ่งที่ฉันเห็นมันเป็น{1,2}ส่วนที่ไม่ทำงาน (โดยวิธีการที่คุณสามารถใช้-name -regexinterchangably?) ความช่วยเหลือใด ๆ ที่ชื่นชม

1
ทำไมผลลัพธ์ grep BSD นี้แตกต่างจาก grep GNU?
คอมพิวเตอร์ของฉันใช้งาน MacOS 10.12.3 และฉันใช้grepยูทิลิตี้ที่ติดตั้งระบบกับรุ่น 2.5.1-FreeBSD เหล่านี้เป็นผลลัพธ์ที่ฉันได้รับเมื่อทดสอบ regexes ต่างๆ: แต่ถ้าฉันเรียกใช้สิ่งเหล่านี้โดยใช้ GNU grep (รุ่น 2.25) ฉันได้รับต่อไปนี้: grep ของ GNU ดูถูกต้องสำหรับฉันและ BSD นั้นไม่ถูกต้องใช่ไหม ทำไมพวกเขาถึงแตกต่างกัน ฉันไม่เข้าใจว่าทำไม grep ของ BSD จึงตรงกับ "a" เมื่อ regex ระบุว่าจะต้องเป็นไปตามจุดเริ่มต้นของบรรทัด

3
วิธีเพิ่มส่วนหัวและ / หรือท้ายกระดาษไปยังสตรีม sed หรือ awk
ฉันมีกลุ่มของผลลัพธ์ที่จะผ่าน sed และ awk ฉันจะนำหน้าผลลัพธ์ด้วย START และต่อท้ายคำตอบด้วย END ได้อย่างไร ตัวอย่างเช่นถ้าฉันมี All this code on all these lines and all these ฉันจะได้รับ: START All this code on all these lines and all these END ? ความพยายามของฉันคือ: awk '{print "START";print;print "END"}' แต่ฉันได้ ... START All this code END START on all these …

3
เหตุใด [az] เครื่องหมายดอกจันจึงจับคู่หมายเลข
ฉันมี 3 ไดเรกทอรีที่เส้นทางปัจจุบัน $ls a_0db_data a_clean_0db_data a_clean_data $ls a_*_data a_0db_data: a_clean_0db_data: a_clean_data: $ls a_[a-z]*_data a_clean_0db_data: a_clean_data: ผมคาดว่าคำสั่ง ls a_clean_dataสุดท้ายคำสั่งเพื่อให้ตรงเท่านั้น ทำไมถึงยังตรงกับที่มี0? bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)

1
ทำไมฉันต้องหลบหนี“ จุด” สองครั้ง?
ฉันรู้ว่าเราสามารถหลบหนีอักขระพิเศษเช่น*(){}$มี\เพื่อให้เป็นตัวอักษรถือว่า ตัวอย่างเช่น\*หรือ\$ แต่ในกรณีที่.ฉันต้องทำสองครั้งอย่าง\\.อื่นก็ถือว่าเป็นตัวละครพิเศษ ตัวอย่าง: man gcc | grep \\. ทำไมถึงเป็นเช่นนั้น?


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

5
วิธีลบ (1) จากชื่อไฟล์โดยใช้คำสั่ง find
ฉันเพิ่งแปลงไฟล์ FLAC ทั้งหมดของฉันเป็นอัตราการสุ่มตัวอย่างที่ต่ำกว่า 44.1 kHz และความลึกบิต 24 บิต (เนื่องจาก iPhone / iPod ไม่รองรับสิ่งที่เหนือกว่า) โดยใช้ XLD บน Mac OS 10.7 (Lion) แม้ว่าฉันจะบอกให้ XLD เขียนทับไฟล์ก่อนหน้านี้ทั้งหมด แต่ XLD ก็ต่อ(1)ท้ายไฟล์ที่คล้ายกันมาก some_song.m4a ถึง some_song(1).m4a ดังนั้นตอนนี้ฉันต้องการลบไฟล์นั้น(1)จากไฟล์ FLAC ทั้งหมดที่ฉันแปลง ฉันรู้ว่าฉันอาจจะใช้บางโปรแกรมหรือแม้แต่ AppleScript เพื่อเปลี่ยนชื่อไฟล์ แต่ฉันต้องการเรียนรู้โดยใช้บรรทัดคำสั่งโรงเรียนเก่า ฉันรู้ว่าfind . -name *\(1\).m4aจะคว้าไฟล์ FLAC ที่แปลงแล้วทั้งหมด ต่อไปฉันรู้ว่าฉันต้องทำบางสิ่งด้วย-execและmvเปลี่ยนชื่อไฟล์ที่พบทั้งหมด (1)แต่สิ่งที่ผมไม่สามารถคิดออกเป็นวิธีที่จะทำให้ชื่อไฟล์เดิมและมีเพียงลบ บางทีฉันอาจต้องทำการจับภาพ regex ของกลุ่มเพื่อจัดเก็บส่วนของชื่อไฟล์ที่ฉันไม่ต้องการแก้ไข หรือบางทีมันเป็นไปไม่ได้ที่จะทำทุกอย่างในบรรทัดเดียวและฉันควรสร้างเชลล์สคริป (ซึ่งฉันไม่สะดวกที่จะทำ แต่ฉันยินดีที่จะลอง) …

4
ฉันจะเลือกไฟล์เฉพาะในไดเรกทอรีอื่นโดยใช้ bash ได้อย่างไร
ฉันต้องการแสดงรายการ (หรือลบหรือดำเนินการอื่น ๆ ) ในบางไฟล์ในไดเรกทอรีเช่นนี้ $ ls /opt/somedir/ aa bb cc aa.txt bb.txt cc.txt $ ls /opt/somedir/(aa|bb|cc) ## pseudo-bash :p aa bb cc ฉันจะบรรลุสิ่งนี้ได้อย่างไร (โดยไม่ต้อง cd-ing ไปที่ไดเรกทอรีก่อน)

4
วิธีการใช้ regex กับ AWK สำหรับการเปลี่ยนสตริง
สมมติว่ามีข้อความจากไฟล์: (bookmarks ("Chapter 1 Introduction 1" "#1" ("1.1 Problem Statement and Basic Definitions 23" "#2") ("Exercises 31" "#30") ("Notes and References 42" "#34")) ) ฉันต้องการเพิ่ม 11 ลงในแต่ละหมายเลขแล้วตามด้วย a "ในแต่ละบรรทัดหากมีหนึ่งเช่น (bookmarks ("Chapter 1 Introduction 12" "#12" ("1.1 Problem Statement and Basic Definitions 34" "#13") ("Exercises 42" "#41") ("Notes and References 53" …

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

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