Как удалить все строки, содержащие символы, отличные от ASCII, с помощью Notepad++ или Emeditor

Как удалить все строки, содержащие символы, отличные от ASCII?

я столько раз пробовал обычные коды выражения, но не работают как следует
Я даже пробовал этот код [^x00-x7F]+ но он не выбрал все символы

идея приходит на ум, чтобы использовать этот путь [^a-z0-9``~!@#$%^&*()-_=+[]{}|;:'"<>,./?] но до сих пор не работает, потому что некоторые из этих символов не были отменены, как / | { } [ ] $ # ^ ( )

  1. если строка содержит какие-либо символы, которых нет в списке ниже, я хочу удалить remove it или bookmark it

    0123456789`~!@#$%^&*()-_=+[]{}/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. простой пример: есть больше подобных персонажей можно найти здесь: https://en.wikipedia.org/wiki/List_of_Unicode_characters

    0123456789`~!@#$%^&*()-_=+[]{}|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    ¤©ª«¬¯°±²³´µ¶·¸¹º»¼½¾¿÷ÆIJŒœƔƕƋƕ
    ƜƝƢƸƾDžNJNjǽǾǼɁɀȾɎʒəɼʰʲʱʴʳʵʶʷʸˁˀˇˆ˟ˠ
    ˩˧Ͱͱͳʹͼͻͺ͵ͿΏΔΘΞΛΣΠΦΧΨΩΪΫάέήίΰαβδε
    θηκλμξπςρφχψωϊϋϏώϑϐϓϒϔϕϖϠϟϞϝϜϡϢ
    ϤϣϧϫϬϮϯϰϱ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲
    ₳₴₵₶₷₸₹₺₻₼₽₾₿⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜
    ⅝⅞⅟℠℡™℣ℤ℥Ω℧ℨ℩KÅℬℭ℮ℯ⇀⇁ↀↁↂↃↄ
    ⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⅀⅁⅂⅃⅄ⅅ
    ⅆⅇⅈⅉ⅊⅋⅌⅍ⅎ⅏ⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽ
    
  3. ожидаемый результат:

    0123456789`~!@#$%^&*()-_=+[]{}|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
21
задан DavidPostill
09.03.2023 17:45 Количество просмотров материала 3369
Распечатать страницу

3 ответа

[^\x00-\x7F] работает нормально, но, если вы хотите использовать длинный классовый характер, как [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?] вы должны экранировать символы, которые имеют особое значение (т. е. -[]\ и добавить linebreak \r,\n.

регулярное выражение приобретает следующий вид:

 [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\|;:'"<>,./?\r\n]
 #                    ^    ^ ^   ^            ^^^^

  • Ctrl+H
  • найти: [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\|;:'"<>,./?\r\n]+$ но, опять-таки, [^\x00-\x7F] работает нормально и более читабельно
  • заменить: LEAVE EMPTY
  • проверить обернуть вокруг
  • проверить регулярное выражение
  • заменить все

результат данного примера:

0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
2
отвечен Toto 2023-03-11 01:33

если вы агностик к решению и не фиксированной Notepad++ вы можете установить bash для Win 10, как я показал здесьhttps://superuser.com/a/1252271/715210 (извините, я всегда возвращаюсь к вашим вопросам с Linux обходные пути ;))

у меня было бы решение, где вы, к сожалению, также потеряете Апостроф '

  1. открыть bash для Windows через меню Пуск
  2. перейдите в папку, в которой находится ваш файл cd /mnt/c/path/folder (диск C: включен /mnt/c)
  3. если файл имеет имя foo.txt вы можете создать файл бар.txt С помощью этой команды:

    cat foo.txt | tr -cd '[:alnum:]\n\r~!@#$%^&*()-_=+{}\|;:<>,./?"`' | sed '/^$/d' > bar.txt

объяснение части:

cat foo.txt выводит текстовый файл и с трубой | вывод перенаправляется на commande tr -cd, который удаляет все символы, отсутствующие в списке после betwenn '...'. Followed by a pipe tosedto remove the empty lines. Last but not least with> бар.тхт` мы перенаправить вывод в файл бар.txt

благодарности:

0
отвечен chloesoe 2023-03-11 03:50

в Notepad++ это просто:

  1. menu Поиск > Марк...

  2. найти: [^\x00-\x7F]

    Mark Mark line

    (•) Регулярное выражение

  3. пресс Найти Все

  4. menu Поиск > закладки > удалить отмеченные строки

0
отвечен miroxlav 2023-03-11 06:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх