php-bashまたはsedの正規表現
ファイルから文字列を削除するための正規表現(PHP)があります:
return preg_replace('/[^A-Za-z0-9 \n \)\(\,\%\\@\!?\#\&\;\'\"\-\+.\/"]/','', $string);
Ubuntuを使用していて、bashまたはsedを使用してファイルの内容をクリーンアップしたいですか?
これどうやってするの?
ありがとう!
答え :
解決策:
非ASCII文字を削除する
あなたは単に非ASCII文字をs{-code-6} ipしたいと思っているようです(ただし、 他の2つのコマンドは、文字のリスト(文字コードによる範囲を含む)を取得して削除します。 文字セット(技術的には、 これにはリストを保持する必要がありますが、隣接する文字コードを利用してリストを折りたたむことができます:
同じファイルに保存する場合は、 {-code-1}<のそれぞれが欠落しています。 / code>と私はそれが意図的であるかどうかわかりません)。これを行うには、この明確な目的のために作成されたコマンドなど、いくつかの方法があります。
{-c ode-2}
{-c ode-3}
{-c ode-4}
{-c ode-5} ユーティリティはこれを自動的に実行し、ターミナルの安全な出力でバイナリファイルの内容をすばやくチェックするのに最適です。テキストのブロックを改行で区切る方法が気に入らないかもしれません。
{-c ode-6} ( "{-c ode-6} anslate"の略)では、
-c オプションはリストの補足を取得し、
-d は、{-c ode-6}が一致を分離するのではなく、一致を削除することを意味します。
sed ( "s {-c ode-6} eamline editor"の略)では、
s///<を実行しています。 PHPコードで使用するsedのような反転した
/g
フラグはg loballyに一致)を空のs{-code-6}に置き換えます。
{-c ode-6} の使用法としては適切な用語ではありません。たとえば、
{-codeのように否定することはできません) -13} ですが、
{-c ode-6} -c )を使用する理由は、いくつかの空白文字(tab、carriage return 、改行)、スペース(
)からtilde(
~ )までの文字の範囲を指定し、コードU+0020からU+でカバーされます007e。
[!-~]
にも出くわす可能性があります。これは、すべての印刷可能なASCII文字の省略形です。スペースは印刷できないため、明示的に名前を付ける必要がありましたが、少なくともスペース文字(U + 0020)は感嘆符( ! 、U + 0021)の直前にあるため、それを私たちの範囲にまとめることができます。
リストされている文字だけを削除します
sed's / [^ \ t \ r \ n-#%-)+-9;?-Z \\ a-z]//g'ファイル名
インプレース
s///
のいずれかを使用してsed-i COMMAND FILENAME
を実行できます。上記のコマンド。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。