Làm cách nào để xóa mọi thứ sau cột đầu tiên trong Notepad ++?


40

Tôi đang cố gắng loại bỏ mọi thứ sau một cột trong Notepad ++. Chế độ cột không phải là một tùy chọn. Có thể không?

Tôi có gì:

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 

Những gì tôi muốn:

70.97.110.40
70.97.117.177
70.97.120.10
70.97.122.105
70.97.122.106
70.97.122.107
70.97.122.104
70.97.122.108
70.97.122.109

2
Các cột được phân tách bằng tab?
Xuất sắc

3
Một câu hỏi nữa: dữ liệu bạn muốn giữ có bao gồm một khoảng trắng không?
Xuất sắc

1
Không, tôi chỉ cần ips
Bob J

20
Tại sao bạn muốn làm điều đó trong notepad ++? Tại sao chế độ cột không phải là một tùy chọn?
Kamil

1
Bạn có thể sử dụng chế độ cột để xóa cột thứ hai vào EOL, sau đó sử dụng Trim Trailing và lưu để thoát khỏi khoảng trắng.
Casey Kuball

Câu trả lời:


60

Nếu dữ liệu trong cột đầu tiên không bao giờ chứa một khoảng trắng, bạn có thể sử dụng biểu thức tìm và thay thế biểu thức thông thường để có được những gì bạn muốn.

Trong chế độ biểu thức chính quy, tìm kiếm:

^([^ ]*).*

Và thay thế bằng

\1

Cái này làm gì

^chỉ ra rằng bất kỳ trận đấu nên bắt đầu ở đầu một dòng.
([^ ]*)là bất kỳ biểu thức nào không chứa khoảng trắng. Trận đấu là tham lam, vì vậy điều này sẽ phù hợp với tất cả mọi thứ cho đến không gian đầu tiên (hoặc cuối dòng, tùy theo điều kiện nào đến trước).
.*là tất cả mọi thứ khác trên đường dây.

\1đề cập đến một phần của trận đấu bên trong dấu ngoặc đơn. Đó là, toàn bộ dòng được thay thế chỉ bằng bit từ cột đầu tiên.


5
Rất vui khi biết rằng notepad ++ hỗ trợ các biểu thức thông thường trong tìm kiếm thay thế!
Kamil

1
Regex sẽ thực hiện công việc cho bạn miễn là dữ liệu không bao giờ chứa khoảng trắng. Đơn giản hơn sẽ là lệnh 'cắt' UNIX nhưng thực hiện các lệnh UNIX dưới cửa sổ là toàn bộ vấn đề. cắt được thực hiện cho điều này và xử lý các tệp lớn một cách nhanh chóng, với các dấu phân cách cột được xác định hoặc theo số lượng ký tự.
Karl

31
Điều này có thể được thực hiện đơn giản hơn nhiều: thay thế ". *" (Lưu ý không gian hàng đầu) bằng "" (tức là không có gì) để xóa mọi thứ sau và bao gồm cả không gian đầu tiên.
Fraxtil

2
@Fraxtil Cảm ơn. Bạn nên đăng nó như là một câu trả lời. Bạn sẽ nhận được một upvote từ tôi.
Xuất sắc

@Excellll ổn, xong.
Fraxtil

99

Đây là một biểu thức chính quy đơn giản hơn mà bạn có thể sử dụng để đạt được hiệu quả tương tự. Thay thế

 .*

(lưu ý không gian hàng đầu)

không có gì. Điều này sẽ xóa mọi thứ sau và bao gồm không gian đầu tiên. Điều này sẽ hoạt động miễn là địa chỉ IP của bạn không bao giờ được thêm tiền tố vào bất kỳ khoảng trắng nào (như trường hợp trong ví dụ của bạn).


8
Man, regex là ma thuật thuần túy. Tôi không nghĩ mình sẽ
mò mẫm

14
Hãy chắc chắn rằng cờ để có. dòng mới phù hợp là tắt.
Taemyr

3
Trong trường hợp nó có khả năng là một tab thay vì một khoảng [ \t].*
trắng

4
@Cornstalks \s.*ngắn hơn. Thậm chí có thể sử dụng \s+.*, để phù hợp với một khoảng trắng tùy ý, bây giờ chúng ta đang mã hóa một cách phòng thủ .
Anko

1
@ jpmc26 miễn là bạn không nói "regex" và "đơn giản" trong một câu :)
Torben Gundtofte-Bruun

39

Nếu bạn đang sử dụng Windows và nếu bạn không nhớ các dấu cách (bạn có thể tìm / thay thế chúng sau đó), hãy sử dụng tính năng Chọn khối :

  1. Bấm và giữ Altphím
  2. Sử dụng chuột, chọn phần cần xóa (toàn bộ khối văn bản)
  3. Thả Altchìa khóa
  4. Xóa khối văn bản đó
  5. Lặp lại khi cần thiết

Đó có phải là điểm trừ "-" không?
Dracs

Xin lỗi - Tôi đã sử dụng dấu ngoặc LT và GT xung quanh phím 'alt'. Đã sửa bây giờ.
Sậy Shilts

10
Bạn có thể thay đổi nó thành <kdb> Alt </ kbd> và nó sẽ định dạng nó làm khóa.
Dracs

Tôi đã sử dụng Notepad mãi mãi .... và chưa bao giờ biết tính năng này tồn tại! 1 triệu +1 !!!!!

1
OP cho biết: "Chế độ cột không phải là một lựa chọn"
Peter Mortensen

11

Một biểu thức thông thường sẽ nhanh hơn, nhưng bạn có thể thực hiện một số điều thực sự khó khăn với macro nếu đó là một nhiệm vụ phức tạp hơn.

Bạn có thể ghi lại một macro:

  1. Con trỏ trên dòng 1
  2. Nhấn Bắt đầu ghi âm
  3. Nhấn phím home
  4. Giữ Ctrltrong khi bạn nhấn phím Right arrow(bảy lần)
  5. Giữ Shifttrong khi bạn nhấn phímEnd
  6. Nhấn phím Delete
  7. Nhấn phím Down arrow
  8. Đánh Stop recording

Sau đó phát lại:

  1. Nhấn "Chạy macro nhiều lần"
  2. Nhập vào các dòng của tài liệu trừ 1, vì dòng đầu tiên đã hoàn thành.

9

Đặt con trỏ sau 70.97.110.40.

Đặt con trỏ

Nhấn Altvà kéo con trỏ sang phải và xuống để chọn phần không mong muốn.

Lựa chọn

Nhấn Backspacehoặc Delete.

Xóa bỏ


1
Tất cả thời gian này sử dụng Notepad ++ và tôi chưa bao giờ biết nó có "Chế độ chọn khối" như TextPad.
Kev

@Kev: nó hoạt động theo cách tương tự trong Visual Studio.
Peter Mortensen

1
OP cho biết: "Chế độ cột không phải là một lựa chọn"
Peter Mortensen

@PeterMortensen - re: VS - hell, đã sử dụng nó từ năm 2002 và thậm chí còn không biết!
Kev

8

Dưới đây là một vài phương pháp thay thế cho câu trả lời đã cho.

Nếu dữ liệu của bạn là fixed width, bạn cũng có thể sử dụng biểu thức chính quy sau trong tìm kiếm:

Tìm cái gì: ^(.{16}).*$

Thay bằng: \1

Thật tuyệt nếu dữ liệu bạn muốn giữ có chứa một khoảng trắng, như ai đó đã đề cập. Ngoài ra, một lần nữa cho dữ liệu chiều rộng cố định, bạn có thể sử dụng Column Mode Editing. Đây là một tính năng nhỏ gọn cho phép bạn chỉnh sửa nhiều dòng dữ liệu trong cùng một vị trí cột. Xem Chỉnh sửa chế độ cột .

Nó đề cập đến các phím mũi tên, nhưng bạn cũng có thể sử dụng Page Up/Downcho một phương thức nhanh hơn, cũng như EndHomecác phím. Chuột cũng hoạt động. Nhưng bạn có thể sử dụng phương pháp này cho một phương pháp xóa dữ liệu sau một thời điểm nhất định, đặc biệt nếu đó chỉ là một vài dòng. Nó cũng tốt cho việc sao chép dữ liệu, nhưng cách nó dán hơi kỳ lạ, vì vậy trước tiên bạn muốn làm quen với điều đó.


1
Tốt hơn là chọn nó và thay thế nó bằng chính nó sẽ là sử dụng giao diện như: (? <= ^. {13}). * Và thay thế nó bằng không có gì. Điều này sẽ chọn bất cứ điều gì sau 13 ký tự đầu tiên.
Chris Murray

4

Tương tự như enthdegree:

  1. Đặt con trỏ ở cột 16
  2. Shift+ Alt+Page Down
  3. Shift+ Alt+End
  4. Delete

Nếu có một dòng trống ở cuối tệp, chỉ cần nhấn Up Arrowtrước số 3.

Nó không hoàn hảo, nhưng nó tiện dụng.


4
  1. Nhấn ALTtrong khi sử dụng chuột như một Lasso.
  2. Chọn tất cả những gì bạn muốn loại bỏ
  3. nhấn DELETE

Giả sử các cột đầu tiên xếp hàng độc đáo, như địa chỉ IP, thì đây là cách nhanh nhất.
bgStack15

OP cho biết: "Chế độ cột không phải là một lựa chọn"
Peter Mortensen

3

Đây là một cách trực quan:

  • Đặt con trỏ ở cuối địa chỉ IP.
  • Alt+ Shift+Pg Down
  • Alt+ Shift+Right
  • Delete

Đây không phải là 'cột dựa.' Nó chỉ hoạt động vì tất cả các địa chỉ IP của bạn xếp hàng.


1
Ý của bạn là "Đây không phải là" dựa trên cột. ""? Alt + Shift + Mũi tên chuyển sang "chế độ cột".
MrWhite

Nó không tôn trọng phân định tab như một cột. Nó chia chúng thành các khoảng trắng để mỗi dòng trong vùng chọn có cùng số ký tự nằm ngoài rìa của điểm bắt đầu lựa chọn.
enthdegree

1

Trong chế độ biểu thức chính quy, tìm kiếm:

\ t. *

Và thay thế bằng

Không có gì


Bạn có thể thêm một hoặc hai câu để giải thích điều này không? Cảm ơn.
fixer1234

1
Stack Exchange chuyển đổi các tab thành không gian trong khi hiển thị, nhưng ngay cả trong chế độ chỉnh sửa, ví dụ này không hiển thị bất kỳ tab nào.
Arjan

0

Xóa mọi thứ sau cột đầu tiên trong Notepad ++:

  1. Chọn cột thứ 2: Alt+ Kéo
  2. Để chọn các cột còn lại: chỉ cần nhấn Right Arrow
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.