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函数在此处记录,并翻译字符。以上是操作回车/换行。

-pand-i参数让 Perl 重命名输入文件,以便将其保留为原始文件的备份。有关详细信息,请参阅perlrun

有关 Perl 单行代码的更多提示/技巧,请参见此处。

于 2013-03-11T13:19:36.163 回答
1

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

于 2013-03-11T13:20:18.443 回答