アラビア文字とその他の文字(句読点、数字、英語の文字など)を含むテキストファイルがあります。アラビア語以外のファイル内のすべての文字を削除するようにsedに指示するにはどうすればよいですか?要するに、私たちは通常、sedに特定の文字を削除/置換して他の文字を印刷するように指示していると言えますが、今はsedに目的の文字を印刷して、他のすべての文字を削除するように指示する方法を探しています。
質問する
1346 次
1 に答える
2
GNU sed では、16 進コードで文字を指定できるはずです。これらは文字クラスで使用できます。
sed 's/[\x00-\x7F]//g' # hex notation
sed 's/[\o000-\o177]//g' # octal notation
tr
次のコマンドでも同じ効果が得られるはずです。
tr -d '[\000-\177]'
どちらの方法も、入力ファイルの UTF8 エンコーディングを前提としています。マルチバイト文字には最上位ビットが設定されているため、標準の ASCII (7 ビット) 文字をすべて単純に取り除くことができます。
一部の明確に定義された文字を除くすべてを保持するには、負の文字クラスを使用します。
sed 's/[^characters you want to keep]//g'
同様のパターンを使用する[^…]\+
と、正規表現のパフォーマンスが向上する場合があります。
于 2012-09-08T09:59:14.297 に答える