Подтвердить что ты не робот

Удалить каждую другую строку в блокноте ++

Есть ли способ в Notepad ++ удалить любую другую или n-ю строку? У меня массивный список данных, и мне нужно уменьшить размер.

Данные сами по себе не так важны, и из списка из 10 000 элементов мне нужен только выбор из 5000

4b9b3361

Ответ 1

Я думаю, что странная идея попытаться сделать с Notepad ++, но мне нравится вызов, поэтому я решил дать ему вращение.

Откройте меню замены, заполните ([^\n]*\n)[^\n]*\n в поле "Найти что" и $1 в поле "Заменить на". Затем выберите регулярное выражение для режима поиска, нажмите "заменить все", и каждая вторая строка будет удалена.

Вы можете создавать похожие регулярные выражения, если хотите сделать что-то подобное. Например, (([^\n]*\n){a})[^\n]*\n заменит каждую n-ю строку, если вы замените a на n-1 и [^\n]*\n([^\n]*\n), чтобы вы сохраняли четные строки вместо нечетных.

(Это было совсем не сложно - все, что мне нужно было сделать, это обновить устаревшую установку Notepad ++.)

Ответ 2

Вы можете попробовать использовать макрос.

  • Начало записи макроса
  • Нажмите n раз
  • Нажмите Shift + End
  • Нажмите дважды два раза
  • Остановить запись макроса
  • Запустить макрос до конца файла

Ответ 3

Я думаю, вы можете сделать это с помощью awk, если вы используете платформу стиля unix:

awk 'NR % 2 == 0' file > outfile

NR - номер строки, поэтому это просто скажет: "Если линия делится на 2, вставьте его в новый файл".

Если вы находитесь на окнах, я думаю, что ответ здесь будет работать:

пакетный файл для сохранения одной из десяти строк

Ответ 4

Я сам столкнулся с этой проблемой. То, что сработало для меня, также с помощью функции Find/Replace, состоит в следующем:

  • Ctrl F и перейдите к Заменить
  • В режиме поиска выберите "Extended (\n,\r,\t..)"
  • Найти что:\n\n
  • Заменить на:\n
  • Заменить все

Ответ 5

Я не думаю, что в Notepad ++ есть функция, которая автоматически удалит любую другую (или каждую n-ю) строку, но если вы написали короткую программу преобразования, это займет всего несколько минут.

Псевдокод будет выглядеть примерно так:

1. Create a StreamReader and StreamWriter (make sure you are not trying to read from
   and write to the same file)
2. While (StreamReader is reading lines) increment i. You could mod it by whatever 
   number n you wanted in order to delete certain lines. Then have a conditional clause
   that would write out if i%n == 0 or whatever you specify.
3. Close the program.

Это точно не отвечает на ваш вопрос, но я надеюсь, что это поможет.