2012-11-27 105 views

回答

3

讀取文件名爲「FILE_NAME」,刪除所有符號\000(空符號), 更換不\n\040-\0176#之間的所有符號,最後 結果寫入「new_file.out」

+0

...無用,因爲所有這些都可以很容易地由Perl完成。 – tripleee

+0

「無用」有點誇大了。比方說,它會比需要做更多的步驟。 –

3

這做了兩兩件事:從文件

  1. 地帶的任何空
  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

注意:我的版本不完全等效。見下面的評論。

+1

確實。在刪除nul字符和用散列替換所有其他控制字符似乎沒有什麼意義。 – Borodin

+0

這很好。我的版本*與原始版本不相同。在原始版本中,NUL將被刪除,但在我的版本中,它們將被'#'替代。 –