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

หรือที่เรียกว่านิพจน์ปกติหรือ regexp คำอธิบายของชุดสตริงมักใช้สำหรับค้นหาและตรวจสอบสตริง

3
จะเพิกเฉยต่อชื่อไฟล์บางอย่างโดยใช้ "ค้นหา" ได้อย่างไร
หนึ่งในคำสั่ง BASH ที่ฉันโปรดปรานคือ: find . -name '*.*' -exec grep 'SearchString' {} /dev/null \; ซึ่งค้นหาเนื้อหาของไฟล์ทั้งหมดที่และด้านล่างของไดเรกทอรีปัจจุบันสำหรับ SearchString ที่ระบุ ในฐานะนักพัฒนาซอฟต์แวร์นี้มีประโยชน์หลายครั้ง เนื่องจากโครงการปัจจุบันของฉันและโครงสร้างของ codebase ของฉันอย่างไรก็ตามฉันต้องการทำให้คำสั่ง BASH นี้มีความก้าวหน้ายิ่งขึ้นโดยไม่ต้องค้นหาไฟล์ใด ๆ ที่อยู่ในหรือด้านล่างไดเรกทอรีที่มี ".svn" หรือไฟล์ใด ๆ ที่ ลงท้ายด้วย ".html" หน้า MAN สำหรับการค้นหาชนิดของฉันสับสนว่า ฉันลองใช้ -prune และมันทำให้ฉันมีพฤติกรรมแปลก ๆ ในความพยายามข้ามหน้า. html เท่านั้น (เพื่อเริ่มต้น) ฉันพยายาม: find . -wholename './*.html' -prune -exec grep 'SearchString' …
137 bash  find  regex 


6
ใช้การสลับ“ |” ใน regex ของ sed
ฉันใช้ sed รุ่น GNU sed เวอร์ชั่น 4.2.1 ฉันต้องการใช้ตัวเลือก "|" สัญลักษณ์ในนิพจน์ย่อย ตัวอย่างเช่น : echo "blia blib bou blf" | sed 's/bl\(ia|f\)//g' ควรกลับมา " blib bou " แต่มันกลับมา "blia blib bou blf". ฉันจะได้ผลลัพธ์ที่คาดหวังได้อย่างไร
78 regex  sed 

3
วิธีจับคู่ตัวเลขตามด้วยจุดโดยใช้ sed?
ฉันพยายามใช้sedเพื่อแทนที่รูปแบบทั้งหมดด้วยตัวเลขตามด้วยจุด (เช่น3., 355.) ทันทีด้วยสตริงว่าง ดังนั้นฉันลอง: sed 's/\d+\.//g' file.txt แต่มันไม่ทำงาน ทำไมถึงเป็นอย่างนั้น?
76 regex  sed 

10
การลบรหัสสี ANSI ออกจากสตรีมข้อความ
ตรวจสอบผลลัพธ์จาก perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' ในเท็กซ์เอดิเตอร์ (เช่นvi) แสดงสิ่งต่อไปนี้: ^[[37mABC ^[[0m เราจะลบรหัสสี ANSI ออกจากไฟล์เอาต์พุตได้อย่างไร ฉันคิดว่าวิธีที่ดีที่สุดคือการส่งออกท่อผ่านตัวแก้ไขสตรีม ต่อไปนี้ใช้ไม่ได้ perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' | perl -pe 's/\^\[\[37m//g' | perl -pe 's/\^\[\[0m//g'
73 regex  sed  perl  awk 

10
การทดแทนในไฟล์ข้อความ ** ที่ไม่มี ** การแสดงออกปกติ
ฉันต้องการแทนที่ข้อความภายในไฟล์ข้อความด้วยการแทนที่ โดยปกติฉันจะทำอะไรเช่น sed -i 's/text/replacement/g' path/to/the/file ปัญหาคือทั้งสองtextและreplacementเป็นสตริงที่ซับซ้อนที่มีเครื่องหมายขีดกลาง, เครื่องหมายทับ, blackslashes, คำพูดและอื่น ๆ ถ้าฉันหลบหนีอักขระที่จำเป็นทั้งหมดภายในtextสิ่งนั้นจะกลายเป็นอ่านไม่ได้ ในขณะที่ฉันไม่ต้องการพลังของการแสดงออกปกติ: ฉันแค่ต้องการแทนที่ข้อความอย่างแท้จริง มีวิธีการแทนที่ข้อความโดยไม่ใช้นิพจน์ทั่วไปด้วยคำสั่ง bash หรือไม่? มันค่อนข้างจะเป็นเรื่องเล็กน้อยที่จะเขียนสคริปต์ที่ทำสิ่งนี้ แต่ฉันคิดว่าควรจะมีบางสิ่งอยู่แล้ว
68 bash  regex  sed  text-editing 

9
ฉันจะค้นหานิพจน์ทั่วไปภายในหน้าเว็บโดยใช้ Google Chrome หรือ IE ได้อย่างไร
ฉันจะค้นหานิพจน์ทั่วไปเช่น 'foo | bar' บนหน้าเว็บโดยใช้ Google Chrome หรือ IE ได้อย่างไร ฉันตระหนักถึงส่วนขยาย "Regular Expression Searcher" แต่มันไม่ได้ผลสำหรับฉัน (ไม่มีอะไรเกิดขึ้นเมื่อฉันกดทับ) บทวิจารณ์บนเว็บสโตร์ระบุว่านี่เป็นปัญหาที่พบบ่อยสำหรับผู้ใช้หลายคน

11
การเปลี่ยนชื่อไฟล์จำนวนมากใน Mac OS X เป็นการประมวลผลแบบแบตช์
ฉันเคยเปลี่ยนชื่อไฟล์ใน Linux ผ่านคำสั่งเปลี่ยนชื่อ: rename 's/old_pattern/new_pattern/g' *glob มีบางอย่างที่คล้ายกันใน Mac OS X (Snow Leopard) หรือไม่

5
บรรทัดใหม่ใน sed บน Mac OS X
ฉันพบว่า\nใช้งานไม่ได้ในระบบปฏิบัติการภายใต้ Mac OS X โดยเฉพาะฉันต้องการแบ่งคำออกเป็นหลายช่อง: # input foo bar ฉันใช้, echo "foo bar" | sed 's/ /\n/' แต่ผลที่ได้คือโง่\nไม่หนี! foonbar หลังจากที่ฉันปรึกษากับ google ฉันพบวิธีแก้ปัญหา : echo 'foo bar' | sed -e 's/ /\'$'\n/g' หลังจากอ่านบทความฉันยังไม่เข้าใจความ\'$'\n/g'หมาย บางคนสามารถอธิบายให้ฉันหรือถ้ามีวิธีอื่นที่จะทำ? ขอบคุณ!
44 macos  mac  bash  regex  sed 


6
จับคู่เฉพาะสิ่งที่เกิดขึ้นครั้งแรกในบรรทัดกับ Regex
ฉันใหม่ทั้งหมดสำหรับ regex และฉันขอขอบคุณความช่วยเหลืออย่างมาก งานง่าย ฉันมีไฟล์ CSV ที่มีบันทึกที่อ่านดังนี้: 12345,67890,12345,67890 12345,67890,12345,67890 12345,67890,12345,67890 12345,67890,12345,67890 12345,67890,12345,67890 ฉันต้องการแทนที่เครื่องหมายจุลภาคแรกด้วยช่องว่างและเว้นเครื่องหมายจุลภาคที่เหลือให้เหลืออยู่สำหรับทุกบรรทัด มีการแสดงออก regex ที่จะตรงกับเครื่องหมายจุลภาคแรกเท่านั้น? ฉันลองสิ่งนี้: ^.....,. สิ่งนี้ตรงกับเครื่องหมายจุลภาค แต่ก็ตรงกับความยาวทั้งหมดของสตริงก่อนหน้าเครื่องหมายจุลภาคดังนั้นหากฉันพยายามแทนที่ด้วยช่องว่างตัวเลขทั้งหมดจะถูกลบเช่นกัน
42 regex 

11
ฉันจะลบทุกอย่างหลังจากคอลัมน์แรกใน Notepad ++ ได้อย่างไร
ฉันพยายามกำจัดทุกอย่างหลังจากคอลัมน์ใน Notepad ++ โหมดคอลัมน์ไม่ใช่ตัวเลือก เป็นไปได้ไหม? สิ่งที่ฉันมี: 70.97.110.40 159 ms [n/a] 21 70.97.117.177 134 ms [n/a] 21 70.97.120.10 75 ms [n/a] 21 70.97.122.105 87 ms www.portless.net 21 70.97.122.106 89 ms www.popovetsky.org 21 70.97.122.107 95 ms www.psmythe.net 21 70.97.122.104 98 ms wasabi.prostructure.com 21 70.97.122.108 89 ms crm.prostructure.com 21 70.97.122.109 87 ms internal.prostructure.com21 …



12
ฉันสามารถใช้นิพจน์ทั่วไปเพื่อจับคู่ที่อยู่ IP ได้อย่างไร
ด้วยgrepไวยากรณ์ต่อไปนี้ฉันต้องการจับคู่ที่อยู่ IP ทั้งหมดในไฟล์ (จากkshสคริปต์) grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' file ปัญหา: มันตรงกับคำ (IP) ที่มีมากกว่า 4 octets: 1.1.1.1.1 หรือ 192.1.1.1.160 ฉันจะจับคู่IP ที่ถูกต้องและที่อยู่ IP กับ 4 octets ได้อย่างไร ฉันยังสามารถใช้ Perl - โซลูชันไวยากรณ์หนึ่งบรรทัดถ้าgrepไม่ทำงาน
35 regex  grep  ip-address 

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