Как я могу удалить все после первого столбца в Notepad ++?


40

Я пытаюсь избавиться от всего после колонки в Notepad ++. Режим столбца не вариант. Является ли это возможным?

Что я имею:

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 

Что я хочу:

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
Столбцы разделены табуляцией?
Excellll

3
Еще один вопрос: содержат ли данные, которые вы хотите сохранить, пробел?
Excellll

1
Нет, мне нужны только ips
Боб Дж

20
Почему вы хотите сделать это в блокноте ++? Почему режим столбца не вариант?
Камил

1
Вы можете использовать режим столбцов, чтобы удалить второй столбец в EOL, а затем использовать Trim Trailing и сохранить, чтобы избавиться от пробелов.
Кейси Кубалл

Ответы:


60

Если данные в первом столбце никогда не содержат пробелов, вы можете использовать регулярное выражение find и replace, чтобы получить то, что вы хотите.

В режиме регулярного выражения найдите:

^([^ ]*).*

И заменить на

\1

Что это делает:

^указывает, что любое совпадение должно начинаться в начале строки.
([^ ]*)любое выражение, которое не содержит пробела Совпадение является жадным, поэтому оно будет соответствовать всему до первого пробела (или до конца строки, в зависимости от того, что наступит раньше).
.*все остальное на линии.

\1относится к части совпадения в скобках. То есть вся строка заменяется только битом из первого столбца.


5
Приятно знать, что notepad ++ поддерживает регулярные выражения в поиске-замене!
Камил

1
Regex сделает всю работу за вас, если в данных никогда не будет пробела. Упрощенной была бы команда UNIX «вырезать», но выполнение команд UNIX под Windows - это целая «другая проблема». Для этого используется метод cut, который быстро обрабатывает большие файлы с определенными разделителями столбцов или счетчиками символов.
Карл

31
Это можно сделать гораздо проще: замените «. *» (Обратите внимание на начальный пробел) на «» (то есть ничего), чтобы удалить все после первого пробела и включая его.
Fraxtil

2
@Fraxtil Спасибо. Вы должны опубликовать это как ответ. Вы получите ответ от меня.
Excellll

@ Отлично, все готово.
Fraxtil

99

Вот более простое регулярное выражение, которое вы можете использовать для достижения того же эффекта. замещать

 .*

(обратите внимание на начальный пробел)

с ничем. Это удалит все после и включая первый пробел. Это будет работать до тех пор, пока к вашим IP-адресам никогда не добавляется какой-либо пробел (как в вашем примере).


8
Человек, регулярное выражение это чистая магия. Я не думаю, что я когда-нибудь буду это делать :)
Торбен Гундтофте-Брюн

14
Убедитесь, что флаг есть. матч новые строки выключен.
Taemyr

3
В случае, если это потенциально табуляция вместо пробела, вы можете использовать[ \t].*
Cornstalks

4
@ Корнсталькс \s.*короче. Может быть, даже использовать \s+.*, чтобы сопоставить произвольное количество пробелов, теперь, когда мы защищаемся .
Анко

1
@ jpmc26 до тех пор, пока вы не скажете «регулярное выражение» и «простой» в одном предложении :)
Торбен Гундтофте-Брюн

39

Если вы используете Windows, и если вы не возражаете против конечных пробелов (вы можете найти / заменить их позже), используйте функцию Block Select :

  1. Нажмите и удерживайте Altклавишу
  2. С помощью мыши выберите часть для удаления (весь блок текста)
  3. Отпустите Altключ
  4. Удалить этот блок текста
  5. Повторите при необходимости

Это должен быть минус "-" ключ?
Драк

Извините - я использовал скобки LT и GT вокруг клавиши 'alt'. Исправлено сейчас.
Рид Шилтс

10
Вы можете изменить его на <kdb> Alt </ kbd> и он отформатирует его как ключ.
Dracs

Я использовал Блокнот навсегда .... и никогда не знал, что эта функция существует! 1 Базиллион +1 !!!!!

1
ОП сказал: «Режим столбца не вариант»
Питер Мортенсен

11

Регулярное выражение быстрее, но вы можете сделать некоторые действительно сложные вещи с макросами , если это более сложная задача.

Вы можете записать макрос:

  1. Курсор в строке 1
  2. Хит Начать запись
  3. Нажмите клавишу домой
  4. Удерживайте Ctrlнажатой клавишу Right arrow(семь раз)
  5. Удерживайте, Shiftпока вы нажимаете клавишуEnd
  6. Нажмите клавишу Delete
  7. Нажмите клавишу Down arrow
  8. Хит Stop recording

Затем воспроизведите это:

  1. Хит "Запускать макрос несколько раз"
  2. Введите в строке документа минус 1, так как первая строка завершена.

9

Поместите курсор после 70.97.110.40.

Поместить курсор

Нажмите Altи перетащите курсор вправо и вниз, чтобы выбрать ненужную деталь.

Выбрать

Нажмите Backspaceили Delete.

удалять


1
Все это время я использовал Notepad ++, и я никогда не знал, что у него есть «Режим выбора блока», такой как TextPad.
Кев

@Kev: в Visual Studio он работает точно так же.
Питер Мортенсен

1
ОП сказал: «Режим столбца не вариант»
Питер Мортенсен

@PeterMortensen - re: VS - черт, использовал это с 2002 года и даже не знал!
Кев

8

Вот пара альтернативных методов для данного ответа.

Если у вас есть данные fixed width, вы также можете использовать следующее регулярное выражение в поиске:

Найти то, что: ^(.{16}).*$

Заменить: \1

Хорошо, если данные, которые вы хотите сохранить, содержат пробел, как кто-то упоминал. Кроме того, опять же для данных фиксированной ширины, вы можете использовать Column Mode Editing. Это аккуратная небольшая функция, которая позволяет редактировать несколько строк данных в одном и том же месте столбца. Смотрите Редактирование в режиме колонки .

В нем упоминаются клавиши со стрелками, но вы также можете использовать Page Up/Downдля более быстрого метода, а также Endи Homeклавиши. Мышь тоже работает. Но вы можете использовать это для специального метода удаления данных после определенной точки, особенно если это всего несколько строк. Это также хорошо для копирования данных, но способ их вставки немного странный, так что вам нужно сначала привыкнуть к этому.


1
Лучше, чем выбрать его и заменить его на себя, было бы использовать следующий вид: (? <= ^. {13}). * И заменить его ничем. Это выберет что-нибудь после первых 13 символов.
Крис Мюррей

4

Аналогично энтгриде:

  1. Поместить курсор в столбец 16
  2. Shift+ Alt+Page Down
  3. Shift+ Alt+End
  4. Delete

Если в конце файла есть пустая строка, просто нажмите Up Arrowдо # 3.

Это не идеально, но это удобно.


4
  1. Нажмите ALT, используя мышь в качестве лассо.
  2. Выберите все, что вы хотите удалить
  3. Нажмите DELETE

Если предположить, что первый столбец правильно расположен, как IP-адреса, то это самый быстрый способ.
bgStack15

ОП сказал: «Режим столбца не вариант»
Питер Мортенсен

3

Вот визуальный способ:

  • Поместите курсор в конец IP-адреса.
  • Alt+Shift+Pg Down
  • Alt+ Shift+Right
  • Delete

Это не «столбец на основе». Это работает только потому, что все ваши IP-адреса совпадают.


1
Что вы подразумеваете под "Это не" на основе столбцов "? Alt + Shift + Arrow переключается в «режим столбца».
MrWhite

Он не учитывает выделение табуляции как столбец. Он разбивает их на пробелы, так что каждая строка в выделении имеет одинаковое количество символов за пределами начальной точки выбора.
Entgdegree

1

В режиме регулярного выражения найдите:

\ Т. *

И заменить на

Ничего такого


Можете ли вы добавить предложение или два, чтобы объяснить, что это делает? Спасибо.
fixer1234

1
Stack Exchange при отображении преобразует вкладки в пробелы, но даже в режиме редактирования в примере не отображаются вкладки.
Арьян

0

Удалить все после первого столбца в Notepad ++:

  1. Выделите 2-й столбец: Alt+ Перетащите
  2. Для выбора остальных столбцов: просто нажмите Right Arrow
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.