Tìm CRLF trong Notepad ++


316

Làm cách nào tôi có thể tìm / thay thế tất cả các ký tự CR / LF trong Notepad ++?

Tôi đang tìm kiếm một cái gì đó tương đương với ký tự đặc biệt ^ p trong Microsoft Word.


Chỉ để xây dựng một chút về những gì 'thenonhacker' đã đề cập. Chúng tôi sử dụng ULtraEdit-32 trong công việc và làm việc với các tệp EDI (x.12), chúng tôi thường phải bọc hoặc bỏ dữ liệu. Hai chuỗi Tìm kiếm & Thay thế phổ biến nhất là "^ p" & "~". đi một chiều sẽ thay thế "~" bằng CR / LF để đọc từng phân đoạn dễ dàng hơn. Theo cách khác, đặt tệp trở lại định dạng mà trình dịch EDI cần. Đối với những người lười biếng như tôi, tôi chỉ cần có những bản đồ đó để dễ sử dụng.
DavidGrove

1
Mặc dù không liên quan, nhưng hữu ích. Tôi đã truy cập trang này sau khi tìm kiếm một phương pháp để chuyển đổi tệp văn bản UNIX sang định dạng Windows trong Windows. Đây là những gì tôi đã làm và làm việc CTRL+H, chọn "Chế độ tìm kiếm: Biểu thức chính quy". "Tìm gì: $" và "Thay thế bằng: \ r". Sao chép dán nội dung vào Notepad hoặc lưu nó vào đĩa.

2
Yay! Notepad ++ 6.0 không hỗ trợ PCRE: regex như [\r\n]+bây giờ. Tôi đã cập nhật câu trả lời của tôi, và sẽ ăn mừng!
VonC

@VonC: Tôi đoán tôi cũng cần cập nhật tất cả các câu trả lời [notepad ++] của mình :)
BoltClock

Câu trả lời:


412

[\r\n]+ cũng nên làm việc

Cập nhật ngày 26 tháng 3 năm 2012, ngày phát hành của Notepad ++ 6.0 :

OMG, nó thực sự làm việc bây giờ !!!

PCRE regrec trong Notepad ++


Câu trả lời gốc 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

Trên thực tế không, nó dường như không hoạt động với regrec ...

Nhưng nếu bạn có Notepad ++ 5.x, bạn có thể sử dụng chế độ tìm kiếm ' mở rộng ' và tìm kiếm \r\n. Điều đó không tìm thấy tất cả của bạn CRLF.

(Tôi nhận ra đây là câu trả lời tương tự so với các câu hỏi khác, nhưng một lần nữa, 'chế độ mở rộng' chỉ khả dụng với Notepad ++ 4.9, 5.x trở lên)


Kể từ tháng 4 năm 2009, bạn có một bài viết wiki trên trang Notepad ++ về chủ đề này:
" Cách thay thế kết thúc dòng, do đó thay đổi bố cục dòng ".
(được đề cập bởi georgiecasey trong câu trả lời của anh ấy / cô ấy bên dưới )

Một số trích xuất có liên quan bao gồm các quy trình tìm kiếm sau:

Tìm kiếm đơn giản ( Ctrl+ F), Chế độ tìm kiếm =Normal

Bạn có thể chọn một EOLtrong cửa sổ chỉnh sửa.

  • Chỉ cần di chuyển con trỏ đến cuối dòng và nhập Shift+ RightMũi tên.
  • hoặc, để chọn EOLbằng chuột, chỉ bắt đầu ở đầu dòng và kéo đến đầu dòng tiếp theo; kéo sang bên phải của công việc EOLsẽ không. Bạn có thể sao chép thủ công EOLvà dán nó vào trường cho các tệp Unix ( LF-only).

Tìm kiếm đơn giản (Ctrl + F), Chế độ tìm kiếm = Mở rộng

Tùy chọn "Mở rộng" hiển thị \n\rdưới dạng các ký tự có thể được khớp.
Cũng như chế độ tìm kiếm thông thường, Notepad ++ đang tìm kiếm ký tự chính xác.
Tìm kiếm \rtrong một tệp định dạng UNIX sẽ không tìm thấy gì, nhưng tìm kiếm \nsẽ. Tương tự, một tệp định dạng Macintosh sẽ chứa \rnhưng không \n.

Tìm kiếm đơn giản (Ctrl + F), Chế độ tìm kiếm = Biểu thức thông thường

Biểu thức chính quy sử dụng các ký tự ^$để neo chuỗi khớp vào đầu hoặc cuối dòng. Chẳng hạn, việc tìm kiếm return;$sẽ tìm thấy các lần xuất hiện của "return;" xảy ra mà không có văn bản tiếp theo trên cùng một dòng. Các ký tự neo hoạt động giống hệt nhau trong tất cả các định dạng tệp.
Các '.' chấm metacharacter không phù hợp với kết thúc dòng.

[Đã kiểm tra trong Notepad ++ 5.8.5]: tìm kiếm biểu thức chính quy với một từ rõ ràng \rhoặc \nkhông hoạt động (trái với tài liệu Scintilla ) .
Không tìm kiếm trên một LF rõ ràng (đã dán) hoặc trên các ký tự EOL (vô hình) được đặt trong trường khi EOL được chọn. Tìm kiếm nâng cao ( Ctrl+ R) mà không cần regrec

Ctrl+ Msẽ chèn một cái gì đó phù hợp với dòng mới. Chúng sẽ được thay thế bằng chuỗi thay thế.
Tôi khuyên bạn nên sử dụng phương pháp này là đáng tin cậy nhất, trừ khi bạn thực sự cần sử dụng regex.
Ví dụ: để xóa mỗi dòng mới thứ hai trong tệp có khoảng cách gấp đôi, hãy nhập Ctrl+ Mhai lần vào hộp chuỗi tìm kiếm và một lần trong hộp chuỗi thay thế.

Tìm kiếm nâng cao ( Ctrl+ R) với Regapi.

Không Ctrl+ M, $cũng không \r\nđược khớp.


Wiki tương tự cũng đề cập đến thay thế trình soạn thảo Hex :

  • Nhập chuỗi mới vào đầu tài liệu.
  • Sau đó chọn để xem tài liệu ở chế độ Hex .
  • Chọn một trong những dòng mới và nhấn Ctrl+ H.
  • Trong khi bạn mở hộp thoại Thay thế, chọn trên nền chuỗi thay thế mới và Ctrl+ Csao chép nó để dán vào hộp Thay thế bằng nhập văn bản.
  • Sau đó thay thế hoặc thay thế tất cả như bạn muốn.

Lưu ý: ký tự được chọn cho dòng mới thường xuất hiện dưới dạng 0a.
Nó có thể có một giá trị khác nếu tệp ở định dạng Windows. Trong trường hợp đó, bạn luôn có thể đi đến Edit -> EOL Conversion -> Convert to Unix Format, và sau khi thay thế, hãy quay lại và Edit -> EOL Conversion -> Convert to Windows Format.


1
Tôi đã chạy phiên bản 4.7. Nâng cấp lên phiên bản mới nhất và chế độ mở rộng hoạt động như quảng cáo. Cảm ơn tất cả những người đã trả lời.
Polara

+1: Tôi đang chạy 4.6 và gặp vấn đề tương tự. Và nhờ câu trả lời của bạn, tôi đã nâng cấp lên 5+. Cảm ơn!
paercebal

Nó hoạt động! Nhưng điều này làm cho Notepad ++ RegExp bị hút. UltraEdit-32 thông minh hơn, bạn chỉ cần \ n và bạn đã hoàn thành công việc của mình ...
thenonhacker

\ r \ n làm việc cho tôi, nhưng không phải là \ n, đây là loại phản trực giác nếu bạn là nhà phát triển đã quen với việc viết tắt cho \ r \ n.
Warren P

2
@GarretWilson Tôi xác nhận [^\r]\nhoạt động tốt (tìm kiếm regex): i.stack.imgur.com/PxZWD.png
VonC

22

Có vẻ như đây là Câu hỏi thường gặp và độ phân giải được cung cấp là:

Tìm kiếm đơn giản (Ctrl + H) mà không cần regrec

Bạn có thể bật Xem / Hiển thị Kết thúc Dòng hoặc xem / Hiển thị tất cả và chọn các ký tự dòng mới hiện có thể nhìn thấy. Sau đó, khi bạn bắt đầu lệnh, một số ký tự khớp với ký tự dòng mới sẽ được dán vào trường tìm kiếm. Các trận đấu sẽ được thay thế bằng chuỗi thay thế, không giống như trong chế độ regex.

Lưu ý 1: Nếu bạn chọn chúng bằng chuột, hãy bắt đầu ngay trước chúng và kéo đến đầu dòng tiếp theo. Kéo đến cuối dòng sẽ không hoạt động.

Lưu ý 2: Bạn không thể sao chép và dán chúng vào trường.

Tìm kiếm nâng cao (Ctrl + R) mà không cần regrec

Ctrl + M sẽ chèn một cái gì đó phù hợp với dòng mới. Chúng sẽ được thay thế bằng chuỗi thay thế.


2
Bạn cũng có thể sử dụng Ctrl + M để chèn dòng mới vào chuỗi thay thế.
Dusty Campbell

2
Đó là một Câu hỏi thường gặp vì đây là một chút của một thiết kế mụn cóc trong một sản phẩm tuyệt vời khác.
Warren P

11

Trên hộp thoại Thay thế, bạn muốn đặt chế độ tìm kiếm thành "Mở rộng". Chế độ biểu hiện bình thường hoặc thông thường sẽ không hoạt động.

Sau đó, chỉ cần tìm "\ r \ n" (hoặc chỉ \ n cho các tệp unix hoặc chỉ \ r cho các tệp định dạng mac) và đặt thay thế thành bất cứ điều gì bạn muốn.


Câu trả lời này đã lỗi thời khi được viết - Mac đã không được sử dụng \rtừ năm 2001 ... (bây giờ là unix)
Jasper

9

Tôi đã không gặp nhiều may mắn với \ r \ n các biểu thức thông thường từ cửa sổ tìm / thay thế.

Tuy nhiên, điều này hoạt động trong Notepad ++ v4.1.2:

  1. Sử dụng menu "Xem | Hiển thị cuối dòng" để cho phép hiển thị kết thúc các ký tự dòng. (Nguồn cấp dữ liệu dòng vận chuyển sẽ hiển thị dưới dạng một ký tự CRLF 'bóng mờ'.)

  2. Chọn một trong các ký tự CRLF '(đặt con trỏ ngay trước một ký tự, nhấn và giữ phím Shift, sau đó nhấn phím RIGHT CURSOR một lần).

  3. Sao chép ký tự CRLF vào bảng tạm.

  4. Đảm bảo rằng bạn không mở hộp thoại tìm hoặc tìm / thay thế.

  5. Mở hộp thoại tìm / thay thế. Trường 'Tìm nội dung' hiển thị nội dung của bảng tạm: trong trường hợp này là ký tự CRLF - hiển thị dưới dạng 2 ký tự hộp '(có lẽ đó là ký tự không thể in được?)

  6. Đảm bảo rằng tùy chọn 'Biểu thức chính quy' TẮT.

Bây giờ bạn sẽ có thể đếm, tìm hoặc thay thế như mong muốn.



4

Cách tôi tìm thấy nó hoạt động là bằng cách sử dụng chức năng Thay thế và sử dụng "\ n", với chế độ "Mở rộng". Tôi đang sử dụng phiên bản 5.8.5.


1
Một trong số rất ít mục trên trang này hoạt động. Sử dụng notepadd ++ 5.8.6. Thật khó để tin một cái gì đó đơn giản này đòi hỏi số lượng câu trả lời quá phức tạp và thường không hoạt động đã được đưa ra trong chủ đề này.
Andrew S

4

Trong năm 2013, v6.13 trở lên, sử dụng:

Menu Chỉnh sửaChuyển đổi EOLĐịnh dạng Windows .


Điều này không bao gồm trường hợp chung thay thế CRLF bằng một hoặc nhiều ký tự tùy ý. Hoặc thay thế một hoặc nhiều ký tự tùy ý bằng CRLF (giả sử thay thế các ký tự khoảng trắng bằng CRLF).
Peter Mortensen

2

Giả sử nó có tìm kiếm "biểu thức chính quy", hãy tìm \ r \ n. Tôi thích \ r? \ N, vì một số tệp không sử dụng trả về vận chuyển.

EDIT: Cảm ơn phản hồi, bất cứ ai đã bỏ phiếu này. Tôi đã học được rằng ... tốt, không có gì, vì bạn không cung cấp phản hồi. Tại sao điều này là sai?


1
Tôi không chắc chắn chính xác tại sao nó không hoạt động nhưng nó không. Tôi giả định rằng việc triển khai regex này (trong Notepad ++) chỉ kiểm tra một dòng duy nhất tại một thời điểm và bỏ qua bất kỳ ký tự dòng mới nào. Đó có lẽ là lý do tại sao bạn được bình chọn xuống.
hadder thẳng thắn

1
Vâng. regex là từng dòng trong notepad ++, vì vậy bạn có thể khớp vị trí tại EOL với $ nhưng không thể tìm kiếm / thay thế các biểu thức vượt qua ranh giới.
Warren P

2

Sử dụng tùy chọn tìm kiếm nâng cao ( Ctrl+ R) và sử dụng phím tắt cho CRLF ( Ctrl+ M) để chèn trả về vận chuyển.


Ctrl + R không hoạt động với tôi khi tôi thử nó. Nó chèn một ký tự điều khiển lạ trong tài liệu, " DC2". Phiên bản Notepad ++: 7.5.6 (2018-05-19).
Peter Mortensen

2

Nếu bạn cần thực hiện thay thế regrec phức tạp bao gồm \ r \ n, bạn có thể khắc phục giới hạn bằng cách tiếp cận ba bước:

  1. Thay thế tất cả \r\nbằng một thẻ, giả sử #GO#→ Kiểm tra 'Mở rộng', thay thế \r\nbằng#GO#
  2. Thực hiện regrec của bạn, ví dụ loại bỏ multiline ICON="*"khỏi bookmark html → Kiểm tra regrec, thay thếICON=.[^"]+.> by >
  3. Đặt lại \ r \ n → Kiểm tra 'Mở rộng', thay thế #GO#bằng\r\n

2

Chuyển đến Xem -> Hiển thị biểu tượng -> Hiển thị tất cả ký tự // Nó hoạt động với tôi


1

Thực hiện cài đặt này. Menu-> Xem-> Hiển thị biểu tượng-> bỏ chọn Hiển thị Kết thúc của dòng


1
Điều này không trả lời câu hỏi ban đầu. Vui lòng giải thích lý do tại sao bạn nghĩ rằng đây là một đóng góp hữu ích cho câu hỏi và trả lời này. Xin vui lòng đọc các trang trung tâm trợ giúp về cách đưa ra câu trả lời hữu ích.
AdrianHHH

1

Tôi đã mở tệp trong Notepad ++ và thực hiện thay thế trong một vài bước:

  1. Thay thế tất cả "\ r \ n" bằng "\ r \ n"
  2. Thay thế tất cả "; \ r \ n" bằng "\ r \ n"
  3. Thay thế tất cả "\ r \ n" bằng ""

Điều này đặt tất cả các khoảng nghỉ mà chúng nên ở và loại bỏ những thứ đang phá vỡ tệp.

Nó làm việc cho tôi.


1

Tôi hoàn toàn không thể làm điều này trong NP v6.9. Tôi thấy nó đủ dễ dàng trên Msoft Word (2K).

Mở tài liệu, đi đến chỉnh sửa-> thay thế.

Sau đó, ở dưới cùng của hộp tìm kiếm, nhấp vào "thêm" rồi tìm nút "Đặc biệt" và họ có một số thứ cho bạn. Đối với phong cách Dos, tôi đã sử dụng "đoạn" một. Đây là một cặp cr lf trong cửa sổ đất.


0

Chỉ cần thực hiện một tìm kiếm và thay thế bằng một khoảng trống trong trường thay thế để mọi thứ đi lên một dòng. Sau đó thực hiện tìm và thay thế (trong trường hợp của tôi bằng dấu chấm phẩy) và thay thế bằng; \ n

:) -T & C


1
Điều này khác với các câu trả lời hiện có như thế nào?
Tất cả công nhân là cần thiết

0

Để thay đổi một tài liệu gồm các dòng riêng biệt thành một dòng duy nhất, với mỗi dòng tạo thành một mục trong danh sách được phân tách bằng dấu phẩy:

  1. ctrl+ fđể mở tìm kiếm / thay thế.
  2. Nhấp vào tab "Thay thế".
  3. Điền vào mục "Tìm những gì" với " \r\n".
  4. Điền vào mục "Thay thế bằng" bằng " ," hoặc " ," (tùy theo sở thích).
  5. Bỏ chọn hộp kiểm "Khớp toàn bộ từ" (bit quan trọng giúp giải thích logic).
  6. Kiểm tra nút radio "Mở rộng".
  7. Nhấp vào nút "Thay thế tất cả".

Các bước này lần lượt, vd

thanh foo

thanh baz

baz foo

vào:

thanh foo, thanh baz, baz foo

hoặc: (tùy theo sở thích)

thanh foo, thanh baz, baz foo


0

Có lẽ bạn có thể sử dụng plugin TextFX

Trong TextFX, chuyển đến chỉnh sửa textfx → xóa các dòng trống


0

Để tìm bất kỳ loại trình tự ngắt dòng nào, hãy sử dụng cấu trúc regex sau:

\R

Để tìm và chọn các chuỗi ngắt dòng liên tiếp , hãy thêm +sau \R: \R+.

Đảm bảo bạn bật chế độ Biểu thức thông thường :

nhập mô tả hình ảnh ở đây

Nó phù hợp:

  • U+000DU+000A -Trình tự CRLF`
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, KHÔNG
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.