私は 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 としてバックアップします。