-1

我对 Perl 不熟悉。我想知道运行这个有什么效果:

 cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' >  new_file.out 
4

3 回答 3

3

读取名为“file_name”的文件,删除所有符号\000(Null symbol),将所有不是\n或之间的符号替换\040-\0176#,最后将结果写入“new_file.out”

于 2012-11-27T20:24:15.327 回答
3

这做了两件事:

  1. 从文件中删除任何空值
  2. 用“#”字符替换任何不可打印的字符。
于 2012-11-27T20:38:36.180 回答
2

perl与-pi我有关,因为-i意味着“就地修改输入文件”并且那里没有输入文件。

我相信可以通过删除cat和 `tr 并仅使用来缩短整个命令行

perl -pe 's/[^\n\040-\176]/#/g' file_name >  new_file.out

然后您实际上可以利用-i开关并使用

perl -p -i -e's/[^\n\040-\176]/#/g' file_name

并且清理后的版本将放入文件中file_name

如果您想要一个安全的备份版本,请更改-i-i.bak,它会将新内容放入file_name并保留旧内容file_name.bak

注意:我的版本不完全等效。请参阅下面的评论。

于 2012-11-27T20:46:56.897 回答