0

Windows Perl での機能を再作成する必要があるシェル スクリプトの行がありますか?

 tr -cd '[:print:]\n\r' | tr -s ' ' | sed -e 's/ $//'

sed の部分は簡単ですが、シェル スクリプトの専門家 (または perl の専門家) ではないので、Perl で tr コマンドの機能を再現するのに苦労しています。

4

1 に答える 1

4

ビットをそれぞれの機能に分解し、それを Perl に変換します。

tr -cd '[:print:]\n\r'

-c印刷可能な文字、改行、改行の補数 ( ) を取り、それらを削除します ( -d)。tr マンページは、それぞれが何をするかを示しています。

tr -s ' '

複数の同じ文字 ( -s) を 1 文字にまとめます。

sed -e 's/ $//'

末尾のスペースを取り除きます。

使用したい言語でそれを行うだけです。それをまとめると、次のようなものが好きかもしれません:

perl -pe 's/\P{PosixPrint}//g; tr/ //s; s/ \z//;'

Perl のtrは文字クラスを実行しないことに注意してください。ただし、補完\P{...}された (大文字の P を使用した) Unicode 文字クラスを使用して同じことを実行できます。Perl 文字クラスは、通常の POSIX 文字クラスも理解します。

于 2013-10-08T20:40:04.790 に答える