SEDで[すべての記号]を指定する方法は?

SEDで[すべての記号]を指定する方法は?

私は非常に大きなテキストファイルから外国語や他のキーボード以外の文字を削除するためにSEDコマンドを使用しています。

例:

sed 's/[^a-zA-Z0-9]//g'

上記のコマンドは、私が望むものに近い英数字のみを含むすべての行を保持します。問題は、!@#$%などの一般的な記号を含む行も削除することです。私はそれらを大事にしたい。 !-)のような金塊のコマンドを検索してみました。しかし、似たようなものが見つかりません。

それでは、リストでアラビア語、ロシア語、および入力できない文字をフィルタリングする方法は? (理想的にはキャラクターだけに核爆弾を撃たくしたくなく、キャラクターが見つかった行全体に核爆弾を撃ちたいです。)

ベストアンサー1

Kusalanandaのようなクラスを使用することに加えて、Unicodeに基づいて独自の範囲を作成できます。確認するこれはユニコールドテーブルを意味します。お気に入りのキャラクターを見つけてください。 PCREの場合、「標準」文字+ TABの可能な方法は次のとおりです。

 grep -P '^[\x{0020}-\x{007e}\x{0008}]{1,}$' file

\x{000A}grep1行あたりの機能(標準モード)のため、改行文字は制御文字として含まれません。 MSスタイルの改行文字が影響を受けて\x{000d}\x{000a}改行文字に使用されることを検討してください!

おすすめ記事