文字/数字/ダッシュ以外の内容を含む行を検索する Grep 正規表現

文字/数字/ダッシュ以外の内容を含む行を検索する Grep 正規表現

文字、数字、ダッシュ以外の内容を含む file.txt 行に移動する正規表現が必要です。

file.txtは次のようになります

   zigzag-p
   100-ig
   inter-op

しかし、約47,000行があります:) だからfile.txtには次のようなものがあるかもしれません。

   a=opera
   a-10-b
   zigzag-p
   100-ig
   inter-op
   out&-yu

数字および/または文字とダッシュを除くすべての行を見つけるには正規表現が必要です。理想的にはgrepで使用できます:)

ベストアンサー1

grep '[^[:alnum:]-]'

次のいずれかを含む行を返します。特徴-ロケール内の英数字に属することも分類もされません。

これは、アルファベット文字に限定されず、中国語や日本語文字などのアルファベット以外の文字の単語コンポーネントも含まれることに注意してください。これには、結合発音区別記号は含まれませんが、これは、レポートが結合アクセントの後にU + 0301が続く線のように見えることをStéphane意味しますée

多くのgrep実装では、すべての有効な文字がalnumまたはalnumである限り、ロケールで有効な文字を形成しないバイトシーケンスが含まれている行を報告できません-

grep -vx '[[:alnum:]-]*'

(空白行を報告するには、*(0以上)を(1以上)に置き換えます。)+

このような場合、いくつかの実装がよりうまく機能しますgrep。 GNUを使用すると、入力が有効なテキストではないことを検出しても機能するように対応するgrepオプションを追加できます。-a

grepより一般的で移植可能には、入力が有効なテキストではない場合、テキストユーティリティでは多くの保証が得られません。これには、有効な文字を形成しないバイトシーケンスだけでなく、NUL文字を含む行または長すぎる行も含まれます。

POSIXポータブル文字セット(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789)の文字52個と数字10個に制限するには、ロケールをC/に設定できますPOSIX

LC_ALL=C grep '[^[:alnum:]-]'

これは、すべてのバイトがCロケールで有効な(定義されていない可能性がある)文字を形成するため、文字デコードの問題にも役立ちます。

おすすめ記事