这个cat / tr / perl命令管道有什么作用?

时间:2012-11-27 20:17:40

标签: perl

我不熟悉Perl。我想知道运行它的效果是什么:

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

这有两件事:

  1. 从文件中删除任何空值
  2. 用'#'字符替换任何不可打印的字符。

答案 2 :(得分: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

注意:我的版本并不完全等效。见下面的评论。