Câu trả lời:
Có một cách dễ dàng để đạt được điều này. Bạn cần thực hiện 3 bước.
Chuyển đến menu Tìm kiếm> Tìm ...> Chọn Tab "Đánh dấu". Kích hoạt các biểu thức thông thường. Tìm kiếm ^<Path>
( ^
là để bắt đầu dòng). Đừng quên kiểm tra "Dòng đánh dấu" và bấm "Đánh dấu tất cả"
==> Tất cả các hàng bạn muốn giữ một Bookmark
Chuyển đến Menu "Tìm kiếm - Đánh dấu - Đánh dấu nghịch đảo"
==> Tất cả dòng bạn muốn xóa đều được đánh dấu.
Chuyển đến Menu "Tìm kiếm - Đánh dấu - Xóa các dòng được đánh dấu"
==> Tất cả các dòng được đánh dấu sẽ bị xóa.
Điều này thực sự có thể được thực hiện trong hai bước kể từ 6.3. Tôi nghĩ rằng nó có thể được thực hiện sớm hơn như tôi đã có 5,9 khi tôi lần đầu tiên thử nó.
Sử dụng bài viết của stema làm cơ sở của câu trả lời này. Có một bước ít hơn bây giờ. Đánh dấu các dòng và loại bỏ các dòng không đánh dấu. Làm xong. Hướng dẫn chi tiết làm theo.
Menu tìm kiếm "Tìm". Trong hộp thoại Tìm, nhấp vào tab "Đánh dấu". Kích hoạt các biểu thức thông thường. Tìm kiếm ^<Path>
( ^
là để bắt đầu dòng). Đừng quên kiểm tra "Dòng đánh dấu" và bấm "Đánh dấu tất cả"
==> Tất cả các hàng bạn muốn giữ bây giờ đều có Bookmark
Menu Tìm kiếm -> Bookmark -> Xóa các dòng không được đánh dấu.
==> Tất cả các dòng NON Bookmarked bị xóa.
^
cụm từ tìm kiếm của mình, cũng không sử dụng biểu thức chính quy. Hy vọng điều này sẽ giúp được ai đó.
regex thay thế
(?!^.*test.*$)^.+
thay thế kiểm tra với văn bản yêu cầu của bạn
thay thế
[\r\n]{2,}
với \r\n
Sử dụng ^(?!<Path>).*\r\n
để thay thế các trận đấu với chuỗi trống. Phiên bản tổng quát sẽ là ^(?!.*?test).*\r\n
. Điều này sẽ không xóa dòng trống ở cuối tập tin. Tất cả các dòng khác được loại bỏ, bao gồm nhiều dòng trống liên tiếp.
(?!)
là một cái nhìn tiêu cực. ^.*test.*$
chọn toàn bộ dòng có chứa văn bản được yêu cầu.
[\r\n]{2,}
phù hợp với bất kỳ \r\n
điều gì xảy ra sau đó một khi đây là dòng Windows mới. nếu bạn có Linux hoặc hệ điều hành khác, bạn có thể cần phải xử lý vấn đề này. thứ hai là thay thế nó bằng một dòng trả về.
\r\n
EOL đề cập trong bài là những gì Windows sử dụng và do đó có thể hoặc không thể là những gì bạn đang tìm kiếm. Thông thường trên các môi trường Linux, nó chỉ \n
hoặc trong các môi trường Mac \r
, vì vậy nếu bạn lấy một tệp từ một trong hai, thì đó sẽ không phải là kiểu EOL của Windows. Tuy nhiên, nếu bạn tải xuống thông qua kích hoạt chế độ FileZilla và ASCII, nó có thể thay đổi chúng trở lại thành Windows EOL (như \n
vào \r\n
). Vì vậy, nếu regex không hoạt động, hãy kiểm tra kiểu EOL bằng cách đi tới "Xem> Hiển thị biểu tượng> Hiển thị kết thúc dòng". CR = \r
. LF = \n
.
Dường như với tôi, cách dễ nhất là chỉ sử dụng tính năng "Tìm tất cả trong tài liệu hiện tại" và sau đó sao chép kết quả vào một tệp mới hoặc chọn tất cả và thay thế trong tệp hiện tại.
Điều này sẽ tìm thấy tất cả các dòng chứa văn bản của bạn và liệt kê chúng ở phía dưới. Chỉ cần nhấp chuột phải vào kết quả tìm kiếm và sao chép / dán.
\tLine [\d]*:
. Vẫn là một câu trả lời tuyệt vời.
Chuyển đến menu Tìm kiếm -> Tìm ... -> Kích hoạt biểu thức thông thường. Tìm kiếm "^ Path " (^ là để bắt đầu dòng).
Nhấp vào nút "Tìm tất cả trong Tài liệu hiện tại".
Cửa sổ "Tìm kết quả" sẽ xuất hiện với tất cả các dòng của mẫu. Chọn sao chép / dán chúng vào một tab mới trong Notepad ++.
Trong tab mới này, đã đến: menu Tìm kiếm -> Thay thế ... -> Kích hoạt các biểu thức thông thường.
Trong trường "Tìm gì:", sử dụng mẫu: "Dòng \ d +:". Để trống trường "Thay thế bằng:".
Nhấp vào nút "Thay thế tất cả".
Cung cấp rằng bạn thực sự muốn khớp <Path>
và không phải là đường dẫn hệ thống tệp, bạn có thể thử điều này từ một dòng lệnh bằng Perl:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Nó hoạt động với Strawberry Perl trên Windows, vì vậy hãy điều chỉnh cho phù hợp nếu kết quả không như bạn mong đợi.
Thật là vụng về, nhưng sao chép tất cả vào Excel , sau đó sử dụng =IF(LEFT(A1,6)="<Path>",A1,"")
và sao chép công thức đó cho đến hết. Sau đó sao chép lại vào Notepad ++. Điều đó không lý tưởng, nhưng nó khá dễ dàng (nếu bạn có Excel). Cảnh báo: Nó sẽ không hoạt động tốt với các dòng thụt lề (Excel sẽ dịch chuyển các cột, v.v.).
Không có cách nào dễ dàng để làm những gì bạn muốn với Notepad ++. Bạn sẽ cần tải chương trình xuống máy tính hoặc tập lệnh một cái gì đó trong VB (Tôi giả sử bạn đang ở trên Windows).
Bạn có thể làm những gì bạn muốn một trong hai cách với sed. Tiện ích sed được yêu thích trên * nix và có thể được tìm thấy cho Windows từ những người tuyệt vời tại GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htmlm ). Bạn sẽ tải xuống chương trình này, và sau đó chạy lệnh của bạn từ dấu nhắc lệnh.
Xóa tất cả các dòng không chứa:
sed -i '/^<PATH>/!d' file
In tất cả các dòng chứa sang một tệp mới:
sed -n '/^<PATH>/p' file > newfile
Tôi đề nghị bạn sử dụng in các dòng bạn muốn vào một tệp mới. Lý do cho điều này là có lẽ bạn sẽ không nhận được câu lệnh regex lần đầu tiên. Tiện ích sed sử dụng Cú pháp cơ bản biểu thức chính quy (xem tài liệu tham khảo tại http://www.THER-expressions.info/reference.html ). Nếu là một cái gì đó giống như đường dẫn * nix (/ var / www) thì bạn sẽ cần phải thoát / ký tự để biểu thức chính quy của bạn hoạt động.
Ví dụ: sed -n '/^\/var\/www/p' file > newfile
Điều này sẽ in ra tất cả các dòng bắt đầu bằng '/ var / www'. Nếu tôi nộp đơn để thoát / ký tự, thì lệnh sẽ bị lỗi. Bạn có thể thoát một ký tự đặc biệt (chẳng hạn như /) bằng ký tự dấu gạch chéo ngược \.
Sử dụng Tìm kiếm-> Thay thế và nhập một biểu thức thông thường như ^[^ ].*
và thay thế tất cả bằng một chuỗi trống bằng cách sử dụng Regular expression
. Bước tiếp theo là tìm các dòng trống tìm kiếm \n\n
thay thế bằng \n
cách sử dụng Extended
nhiều lần cho đến khi 0 occurrences were found.
(sử dụng \r\n\r\n
và \r\n
tùy thuộc vào định dạng tệp). Nếu bạn có rất nhiều dòng trống liên tiếp, thì sử dụng nhanh hơn \n\n\n\n\n\n\n
hoặc thậm chí nhiều hơn \n
: s trong chuỗi tìm kiếm.