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