web-dev-qa-db-ja.com

Notepad ++またはEmeditorを使用して非ASCII文字を含むすべての行を削除する方法

非ASCIIキーボード文字を含むすべての行を削除するにはどうすればよいですか?

正規表現コードを何度も試しましたが、このコード_[^\x00-\x7F]+_を試しても、すべての文字が選択されませんでした。

私の頭に浮かぶアイデアは、[^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]をこのように使用することですが、一部の文字が_\_ _/_ _|_ _{_ _}_ _[_ _]_ _$_ _#_ _^_ _(_ _)_

  1. 下のリストにない文字が行に含まれている場合は、その行を削除するか、ブックマークまたはブックマークします

    _0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    _
  2. 簡単な例:このような文字は次の場所にあります: https://en.wikipedia.org/wiki/List_of_Unicode_characters

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

    _0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    _
3
DeathRival

_[^\x00-\x7F]_は正常に機能しますが、[^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]のような長い文字クラスを使用する場合は、特別な意味を持つ文字をエスケープする必要があります(つまり、_-[]\_と改行_\r_、_\n_。

正規表現は次のようになります。

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

  • Ctrl+H
  • 何を見つける:[^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]+$ただし、_[^\x00-\x7F]_は正常に機能し、読みやすくなります
  • 置換:_LEAVE EMPTY_
  • チェックラップアラウンド
  • 正規表現をチェック
  • Replace all

与えられた例の結果:

_0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
_
3
Toto

Notepad ++では、これは簡単です。

  1. メニュー検索> マーク...

  2. 何を見つける:[^\x00-\x7F]
    ☑マークライン
    (•) 正規表現

  3. すべて検索を押します

  4. メニュー検索> ブックマーク> ブックマークされた行を削除

0
miroxlav

ソリューションにとらわれず、Notepad ++に固定されていない場合は、ここで示したように、Win 10用のbashをインストールできます https://superuser.com/a/1252271/71521 (申し訳ありませんが、いつも戻ってきますLinuxの回避策であなたの質問に;))

残念ながら、アポストロフィも失うという解決策があります_'_

  1. スタートメニューからWindowsのbashを開く
  2. _cd /mnt/c/path/folder_でファイルが配置されているフォルダーに移動します(ドライブC:は/ mnt/cにあります)
  3. ファイルの名前がfoo.txtの場合、ファイルbar.txtを生成できます。 -)このコマンドで:

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

パーツの説明:

_cat foo.txt_はテキストファイルを出力し、パイプを使用して_|_出力はコマンド__tr -cd_にリダイレクトされ、その後_'...'. Followed by a pipe to_ sed _to remove the empty lines. Last but not least with_> bar.txt`出力をファイルにリダイレクトしますbar.txt

おかげで:

0
chloesoe