1

私は Perl を学んだことがなく、他の人が書いた作品を理解しようとしています。誰かperl -pi.bak -e "tr/\n\r/ /d" test.XML意味を教えてくれませんか?前もって感謝します。

4

3 に答える 3

8
perl -pi.bak -e "tr/\n\r/ /d" test.XML
  • -p引数ファイルまたは標準入力からの入力の読み取り(プログラムの周りの暗黙のwhileループ)
  • -i.bak引数ファイルに対してインプレース編集を実行し、拡張子が.のコピーを保存します.bak
  • -eコード
  • tr/\n\r/ /d左側のすべての文字を\n\r右側の対応する文字(スペース)に音訳し、対応する文字/dがないエントリを削除します。

したがって、基本的にこれはファイルを取得しtest.XML、コピーをに保存しtest.XML.bak、すべての改行をスペースに変更し、すべての改行文字を削除し、\rこのコピーをとして保存しますtest.XML

このコマンドを複数回実行すると、バックアップを上書きできることに注意してください。バックアップはバックアップされません。

于 2013-03-11T13:51:29.367 に答える
2

簡単に言えば、-e入力ファイルの各行に対して次のスクリプトを実行していますtest.XML。次に、変更を入力ファイルに書き戻し、元のファイルを.bakサフィックス付きで保持します。サンプルの XML ファイルを作成して試してみます。元のファイルが変更されており (ファイルシステムの日付を確認してください)、元のファイルが.bakサフィックス付きで保持されていることがわかります。

tr関数はここに文書化されており、文字を変換します。上記はキャリッジリターン/ラインフィードの操作です。

-pおよび-i引数により、Perl は入力ファイルの名前を変更して、元のファイルのバックアップとして保持できるようにします。詳細については、 perlrunを参照してください。

Perl ワンライナーに関するその他のヒント/コツについては、こちらを参照してください。

于 2013-03-11T13:19:36.163 に答える
1

test.XML の改行をスペースに変更します。また、元のファイルを test.XML.bak としてバックアップします。

于 2013-03-11T13:20:18.443 に答える