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