สมมติว่าคุณมีข้อความต่อไปนี้:
abc
123
abc
456
789
abc
abc
ฉันต้องการลบบรรทัด "abc" ทั้งหมดและเก็บไว้เพียงบรรทัดเดียว ฉันไม่คิดจะเรียงลำดับ ผลลัพธ์ควรเป็นดังนี้:
abc
123
456
789
สมมติว่าคุณมีข้อความต่อไปนี้:
abc
123
abc
456
789
abc
abc
ฉันต้องการลบบรรทัด "abc" ทั้งหมดและเก็บไว้เพียงบรรทัดเดียว ฉันไม่คิดจะเรียงลำดับ ผลลัพธ์ควรเป็นดังนี้:
abc
123
456
789
คำตอบ:
จัดเรียงบรรทัดตามตัวอักษรหากยังไม่ได้ดำเนินการตามขั้นตอนเหล่านี้:
(ตามคำถามที่เกี่ยวข้องนี้: ฉันจะค้นหาและลบบรรทัดที่ซ้ำกันออกจากไฟล์โดยใช้นิพจน์ทั่วไปได้อย่างไร )
Control+F
สลับ "โหมดแทนที่"
สลับ "ใช้นิพจน์ทั่วไป" (ไอคอนที่มี .*สัญลักษณ์)
ในการค้นหาพิมพ์^(.*)(\n\1)+$
ใน " แทนที่ด้วย " ให้พิมพ์$1
ในกรณีนี้ให้หันไปใช้โซลูชันภายนอก VS Code (ดูที่นี่ ) หรือ - หากเอกสารของคุณมีขนาดไม่ใหญ่มากและคุณไม่รังเกียจที่จะส่งปุ่ม Replace All ให้ทำตามขั้นตอนก่อนหน้านี้ แต่ในขั้นตอนที่ 4 และ 5 ป้อนสิ่งเหล่านี้:
(ขึ้นอยู่กับการลบบรรทัดที่ซ้ำกันโดยไม่ต้องเรียงลำดับ )
ข้อควรระวัง: บล็อกไฟล์ที่มีบรรทัดมากเกินไป (1,000+); อาจทำให้ VS Code ขัดข้อง; อาจแนะนำบรรทัดว่างในบางกรณี
ค้นหา :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
แทนที่ด้วย :$1
และจากนั้นคลิกที่ปุ่ม "แทนที่ทั้งหมด" หลายครั้งตามที่มีการเกิดขึ้นซ้ำ
คุณจะรู้ว่าเพียงพอแล้วเมื่อจำนวนบรรทัดหยุดลดลงเมื่อคุณคลิกปุ่ม ไปที่บรรทัดสุดท้ายของเอกสารเพื่อจับตาดูสิ่งนั้น
^(.*)(\n\1)+$ได้ไหม หลังจากลบแถวที่ซ้ำกันฉันต้องการดูแถวทั้งหมดที่มีคอลัมน์แรกที่ซ้ำกันใน csv และต้องการแก้ไข regex
\r?บิตจากคำตอบอื่นไม่จำเป็นจริงๆ
นี่คือส่วนขยายที่น่าสนใจมาก: Transformer
คุณสมบัติ:
สำหรับการลบบรรทัดที่ซ้ำกัน:
ลบบรรทัดที่ซ้ำกันออกจากเอกสาร
ดำเนินการกับการเลือกหรือบล็อกปัจจุบันหากไม่มีการเลือก
ฉันไม่ได้เล่นกับมันมากนักนอกจากคำสั่ง "Unique Lines" แต่ดูเหมือนว่าทำได้ดีทีเดียว (รวมถึงการพยายามใช้เครื่องบันทึกมาโครด้วย!)
เพื่อเพิ่มในการตอบกลับของ @ Marc.2377
หากคำสั่งนั้นสำคัญและคุณไม่สนใจว่าคุณจะเก็บบรรทัดสุดท้ายที่ซ้ำกันเพียงแค่ค้นหา regexp ต่อไปนี้หากคุณต้องการลบเฉพาะบรรทัดที่ซ้ำกันที่ไม่ว่างเปล่า
^(.+\n)(?=(?:.*\n)*?\1)
หากคุณต้องการลบบรรทัดว่างที่ซ้ำกันให้ใช้*แทน+
^(.*\n)(?=(?:.*\n)*?\1)
และแทนที่ด้วยอะไรเลย
สิ่งนี้จะใช้เวลาเป็นบรรทัดและพยายามหาบรรทัดข้างหน้าอีก (อาจจะเป็น 0) ตามด้วยบรรทัดเดียวกันกับที่ใช้ มันจะลบเส้นที่ถ่ายออก
นี่เป็นเพียงภาพเดียว ไม่จำเป็นต้องสแปมปุ่มแทนที่
^(.+\n)(?=(?:.*\n)*?\1)แทนเนื่องจาก regex ของคุณลบบรรทัดว่างที่ไม่คาดคิด โหวตแล้ว
xxx(?=…)เป็นการจับคู่แบบ Lookahead ดังนั้นจึงทำให้แน่ใจว่าสิ่งที่ตามหลัง "xxx" จะตรงกับ "…" แต่จะไม่เลื่อนการค้นหา (?:…)เป็นเพียงวงเล็บที่ไม่นับในจำนวนวงเล็บ .*\nเป็นรูปแบบสำหรับเส้น (อาจว่างเปล่า) *หมายความว่าอาจมีหลายบรรทัดแม้ว่าจะไม่มีเลยก็ตาม ?หลังจากเครื่องหมายดอกจัน ( *) หมายความว่าเราต้องการให้เป็นไม่กี่บรรทัดที่เป็นไปได้ ในฐานะที่เป็น\1ดังต่อไปนี้การแสดงออกนี้ผลที่ได้คือการที่เรามองไปข้างหน้าสำหรับทุกสายที่ไม่ตรงกับจนกว่าเราจะพบว่าการจับคู่บรรทัด\1 \1ฉันหวังว่านี่จะทำให้ชัดเจน
ฉันเพิ่งมีปัญหาเดียวกันและพบแพ็คเกจ Visual Studio Code "เรียงลำดับบรรทัด" ดูตลาด Visual Studio Code สำหรับรายละเอียด (เช่นเรียงลำดับบรรทัด )
แพคเกจนี้มีตัวเลือก "การเรียงลำดับบรรทัด (ไม่ซ้ำกัน)" ซึ่งทำเพื่อฉัน ดูแลช่องว่างสีขาวที่จุดเริ่มต้น / จุดสิ้นสุดของบรรทัด มีผลต่อการพิจารณาว่าเส้นไม่ซ้ำกันหรือไม่
ติดตั้งส่วนขยายDupCheckerตีF1และพิมพ์ "Check Duplicates"
จะตรวจสอบรายการที่ซ้ำกันและถามว่าคุณต้องการลบออกหรือไม่
ไม่ได้อยู่ใน Visual Studio Code แต่ถ้าใช้งานได้ก็ใช้งานได้
ไม่ใช่คำตอบที่ดีที่สุดตามที่คุณระบุ Visual Studio Code แต่อย่างที่บอก: ถ้ามันใช้ได้ก็ใช้งานได้ :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?ทำให้ vscode ของฉันพัง .... ฉันค้นหาในไฟล์เดียว 229 บรรทัด :(