我对 Perl 不熟悉。我想知道运行这个有什么效果:
cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' > new_file.out
我对 Perl 不熟悉。我想知道运行这个有什么效果:
cat file_name | tr -d '\000' | perl -pi -e 's/[^\n\040-\176]/#/g' > new_file.out
读取名为“file_name”的文件,删除所有符号\000
(Null symbol),将所有不是\n
或之间的符号替换\040-\0176
为#
,最后将结果写入“new_file.out”
这做了两件事:
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
。
注意:我的版本不完全等效。请参阅下面的评论。