Sublime - xóa tất cả các dòng chứa giá trị cụ thể


116

Tôi có một tệp nhật ký 900mb mà tôi có thể mở trong SublimeText 3. Tệp này có các dòng tương tự như sau.

10/08/2014 23:45:31:828,Information,,,,ExportManager: ,No records to send and/or not connected

Làm cách nào tôi có thể lọc ra tất cả các dòng chứa No records to send and/or not connected


Trong khi các giải pháp dưới đây hoạt động, loại công việc này thực sự nên được thực hiện với sed / awk cho các tệp lớn.
Bar

Câu trả lời:


229

Bạn có thể thực hiện tìm kiếm và thay thế biểu thức chính quy:

Bấm Tìm> Thay thế.

Đảm bảo rằng nút Biểu thức chính quy được nhấn.

Đối với trường Tìm gì, hãy đặt:

^.*No records to send and/or not connected.*\n

Để trống trường Thay thế Bằng.

Nhấp vào Thay thế Tất cả


16
Điểm dừng / khoảng thời gian đầy đủ ở cuối rất quan trọng, nếu không có nó, nó sẽ không hoạt động. Ngoài ra, bạn có thể sử dụng cái này:^.*No records to send and/or not connected\S.*$
Navigatron

Giải pháp này là giải pháp khả thi duy nhất nếu bạn đang hoạt động trên một tệp lớn. Máy của tôi bị kẹt trong vài phút khi tôi thực hiện Ctrl+Shift+Kvới 200.000 dòng được chọn.
Przemek D

Imma thử điều này với 26 000 000 tập tin dòng của tôi: ')
YB Nguyên nhân

64

Đối với những người không muốn viết regex - bạn có thể chỉ cần chọn chuỗi tìm kiếm, nhấn ctrl+cmd+ghoặc chọn "Tìm nhanh tất cả" từ menu, thao tác này sẽ giúp bạn có các lựa chọn cho từng chuỗi phù hợp; từ đó Homesẽ di chuyển mọi con trỏ lựa chọn đến đầu dòng, shift+Endsẽ chọn mọi dòng phù hợp vàdel, del sẽ xóa tất cả chúng.

Chỉnh sửa nhiều con trỏ rất thú vị!


4
Đây là một mẹo tổng quát hơn rất hữu ích. Mục tiêu của tôi là xóa tất cả các dòng có chứa một chuỗi. Tôi đã kết thúc việc chọn một phiên bản của nó sau đó sử dụng "QuickFind" với phím tắt Ctrl+Cmd+Gnhư Leonid đề xuất để chọn tất cả các chuỗi đó. Sau đó, tôi có thể truy cập trực tiếp vào "Xóa dòng" Ctrl-Shift-Kvà phẫu thuật tất cả các dòng với chuỗi này đã được xóa ngay lập tức. Sublime Text thực sự là trình soạn thảo văn bản tốt nhất mà tôi từng sử dụng.
MiB

Ctrl + cmd + g có giống ctrl + alt + g trên Windows không? Tôi không thể làm cho việc này hoạt động
black panda

@black panda Đối với cửa sổ "Tìm nhanh tất cả" là alt + f3 - Cảm ơn Leonid +1
Christopher

Nếu bạn đang như tôi và bạn không có một nút Home, bạn cũng có thể sử dụng CMD + <- (mũi tên trái)
Koray Tugay

4
Bạn cũng có thể sử dụng cmd + L để mở rộng lựa chọn thành dòng.
Koray Tugay

53

tôi không thể làm cho regex hoạt động nên tôi đã sử dụng phương pháp Alt-F3 từ câu trả lời này:

/superuser/452189/how-can-i-filter-a-file-for-lines-contain-a-string-in-sublime-text-2/598999#598999

  1. Chọn chuỗi quan tâm
  2. Nhấn Alt+ F3để chuyển sang chế độ nhiều con trỏ trên tất cả các lần xuất hiện ( Ctrl+ CMD+ Gtrên Mac OS X)
  3. Nhấn Ctrl+ L[xem nhận xét] ( Cmd+ Ltrên Mac)
  4. Sao chép-dán lựa chọn vào bộ đệm khác
  5. Del

2
Hai điều: (1) Bạn có thể liên kết đến một câu trả lời riêng lẻ như thế này (2) Bạn nên tóm tắt câu trả lời khác ở đây (và chuyên biệt nó để trả lời câu hỏi này khi thích hợp).
Trình biên dịch dễ thấy

4
Bạn có thể thay thế các bước 3 và 4 bằng CTRL + L, mở rộng các lựa chọn thành toàn bộ dòng, bao gồm cả ngắt dòng.
Chnossos

2
Đối với những người như tôi nguyền rủa bởi một chương trình trọng điểm MAC: Ctrl+Cmd+Gđể cho đa con trỏ trên tất cả các lần xuất hiện, Cmd+Lđể mở rộng đường, và các bản sao thông thường / dán
Cyril Duchon-Doris

27

Đây là những gì tôi tìm thấy cho người dùng windows:

  1. Chọn chuỗi (mọi dòng chứa chuỗi này sẽ được xóa).
  2. Nhấn ALT + F3.
  3. Nhấn Ctrl + L.
  4. Nhấn Xóa.

21

Không mã regex nào được đề xuất ở trên hoạt động trong trường hợp của tôi, nhưng điều này đã hoạt động:

.*(text in question).*

Nó sẽ để các dòng trống trên mã của bạn, bạn có muốn vậy không? Nếu không, hãy thêm \nhoặc $vào cuối:.*(text in question).*\n
người dùng

Nếu các dòng có cấu trúc như "abc / xyz / something", để sử dụng regex, hãy thêm '\'. Ví dụ, nếu chúng ta phải tìm kiếm bất cứ điều gì ở giữa abc / và / cái gì đó thì biểu thức sẽ được: abc /\.*.*\/ một cái gì đó
Avik

Công trình đối với tôi, Nếu bạn cần nhiều trận đấu như tôi đã làm, sử dụng |như sau:.*(a).*|.*(b).*|.*(c).*
bryc

0

Tôi đã gặp sự cố tương tự khi chỉnh sửa sơ đồ trang web

Điều này đã làm việc cho tôi:

  1. Sao chép từ cuối cùng trong các dòng mà bạn muốn xóa
  2. Tìm tất cả
  3. Nhấn xóa để xóa toàn bộ dòng

0

Các câu trả lời trên là những cách chính xác, nhưng nếu bạn muốn loại bỏ các hàng chỉ có một chuỗi đơn lẻ thì hãy làm, Tìm -> Thay thế -> đặt ^.*[a-zA-Z]+.*\nTrong phần tìm và giữ thay thế bằng trống. Nhấn vào nút thay thế tất cả, thao tác này sẽ xóa tất cả các hàng có ngay cả một chuỗi duy nhất trong đó.

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.