-1

私はPerlに詳しくありません。これを実行した場合の影響を知りたい:

 cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' >  new_file.out 
4

3 に答える 3

3

"file_name" という名前のファイルを読み取り、すべてのシンボル\000(ヌル シンボル) を削除し、 ではない\n、または の間\040-\0176にあるすべてのシンボルを置き換え#、最後に結果を "new_file.out" に書き込みます。

于 2012-11-27T20:24:15.327 に答える
3

これにより、次の 2 つのことが行われます。

  1. ファイルからすべてのヌルを取り除きます
  2. 印刷できない文字は「#」文字に置き換えます。
于 2012-11-27T20:38:36.180 に答える
2

「入力ファイルをインプレースで変更する」という意味で、そこに入力ファイルがないので、perl-piは私に関係があります。-i

catと`trを削除して使用するだけで、コマンドライン全体を短縮できると思います。

perl -pe 's/[^\n\040-\176]/#/g' file_name >  new_file.out

そして、実際に-iスイッチを利用して使用することができます

perl -p -i -e's/[^\n\040-\176]/#/g' file_name

クリーンアップされたバージョンがファイルに入れられますfile_name

安全のためにバックアップバージョンが必要な場合は、に変更-iする-i.bakと、新しいコンテンツが挿入されfile_name、古いコンテンツが保持されfile_name.bakます。

:私のバージョンは完全に同等ではありません。以下のコメントを参照してください。

于 2012-11-27T20:46:56.897 に答える