Есть ли способ в Notepad ++ удалить любую другую или n-ю строку? У меня массивный список данных, и мне нужно уменьшить размер.
Данные сами по себе не так важны, и из списка из 10 000 элементов мне нужен только выбор из 5000
Есть ли способ в Notepad ++ удалить любую другую или n-ю строку? У меня массивный список данных, и мне нужно уменьшить размер.
Данные сами по себе не так важны, и из списка из 10 000 элементов мне нужен только выбор из 5000
Я думаю, что странная идея попытаться сделать с Notepad ++, но мне нравится вызов, поэтому я решил дать ему вращение.
Откройте меню замены, заполните ([^\n]*\n)[^\n]*\n
в поле "Найти что" и $1
в поле "Заменить на". Затем выберите регулярное выражение для режима поиска, нажмите "заменить все", и каждая вторая строка будет удалена.
Вы можете создавать похожие регулярные выражения, если хотите сделать что-то подобное. Например, (([^\n]*\n){a})[^\n]*\n
заменит каждую n-ю строку, если вы замените a
на n-1 и [^\n]*\n([^\n]*\n)
, чтобы вы сохраняли четные строки вместо нечетных.
(Это было совсем не сложно - все, что мне нужно было сделать, это обновить устаревшую установку Notepad ++.)
Вы можете попробовать использовать макрос.
Я думаю, вы можете сделать это с помощью awk, если вы используете платформу стиля unix:
awk 'NR % 2 == 0' file > outfile
NR - номер строки, поэтому это просто скажет: "Если линия делится на 2, вставьте его в новый файл".
Если вы находитесь на окнах, я думаю, что ответ здесь будет работать:
Я сам столкнулся с этой проблемой. То, что сработало для меня, также с помощью функции Find/Replace, состоит в следующем:
Я не думаю, что в 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.
Это точно не отвечает на ваш вопрос, но я надеюсь, что это поможет.