perl -pi.bak -e" tr / \ n \ r / / d"的test.xml

时间:2013-03-11 13:18:12

标签: perl

我从未学过Perl并试图理解别人写的一篇文章。有人可以告诉我perl -pi.bak -e "tr/\n\r/ /d" test.XML的含义吗?提前谢谢。

3 个答案:

答案 0 :(得分:7)

perl -pi.bak -e "tr/\n\r/ /d" test.XML
  • -p从参数文件或标准输入读取输入(隐式循环程序循环)
  • -i.bak对参数文件执行就地编辑并保存扩展名为.bak的副本。
  • -e代码
  • tr/\n\r/ /d将左侧\n\r中的所有字符音译为右侧(空格)中的相应字符,/d删除任何条目没有相应的角色。

所以基本上这将采用文件test.XML,在test.XML.bak中存储副本,将所有换行符更改为空格,删除所有换行符\r,并将此副本另存为{{ 1}}。

请注意,您可以多次运行此命令来覆盖备份。备份未备份。

答案 1 :(得分:2)

简而言之,它为输入文件-e的每一行执行test.XML之后的脚本。然后,它将修改写回输入文件,并保留带有.bak后缀的原始文件。我会创建一个示例XML文件并尝试一下。您将看到原始文件已被修改(检查文件系统日期),原始文件保留为.bak后缀。

tr函数记录在案here,并翻译字符。以上是操纵回车/换行。

-p-i参数允许Perl重命名输入文件,使其保留为原始文件的备份。有关详细信息,请参阅perlrun

有关Perl one-liners的更多提示/技巧,请参阅here

答案 2 :(得分:1)

它将test.XML中的换行符更改为空格。它还将原始文件备份为test.XML.bak。