私は Perl を学んだことがなく、他の人が書いた作品を理解しようとしています。誰かperl -pi.bak -e "tr/\n\r/ /d" test.XML意味を教えてくれませんか?前もって感謝します。
3 に答える
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。
このコマンドを複数回実行すると、バックアップを上書きできることに注意してください。バックアップはバックアップされません。
簡単に言えば、-e入力ファイルの各行に対して次のスクリプトを実行していますtest.XML。次に、変更を入力ファイルに書き戻し、元のファイルを.bakサフィックス付きで保持します。サンプルの XML ファイルを作成して試してみます。元のファイルが変更されており (ファイルシステムの日付を確認してください)、元のファイルが.bakサフィックス付きで保持されていることがわかります。
tr関数はここに文書化されており、文字を変換します。上記はキャリッジリターン/ラインフィードの操作です。
-pおよび-i引数により、Perl は入力ファイルの名前を変更して、元のファイルのバックアップとして保持できるようにします。詳細については、 perlrunを参照してください。
Perl ワンライナーに関するその他のヒント/コツについては、こちらを参照してください。
test.XML の改行をスペースに変更します。また、元のファイルを test.XML.bak としてバックアップします。