我想从一堆文本文件中删除奇怪的/特殊字符。在这里,我使用以下命令删除奇怪的字符,但它给了我错误。
命令 :
1)grep -lri -e ââ¬Å temp.txt | xargs sed -i ' s_ââ¬Å_“_g'
2)grep -lri -e ââ¬Å temp.txt | xargs sed -i ' s/ââ¬Å/“/g'
3)grep -lri -e ââ¬Å temp.txt | xargs perl -piew ' s_ââ¬Å_"_g'
4)grep -lri -e ââ¬Å temp.txt | xargs perl -piew ' s/ââ¬Å/"/g'
这里我想用“引号”替换“这个字符。
这些是我想要从文本文件中删除的一些奇怪的字符:
— ,— ,;,:,! , ¡ , ¿ , · , ‚ , ‹ , › , » , @ , / , [ , ]\ , \^ , + , \ , \$ , \s , & , # , % , †, ‡ , ` , ´ , ¯ , ˘ , ¨ , § , ¶ , © , ® , â„ , ° , º , ∂ , ∆ , ∠, âˆ' , ± , = , ≠, ¬ , \ , , ~ , ∫ , € , ª , à , â , Ã… , ä , Æ 、 Ç 、 è 、 ë 、 ï¬ 、 fl 、 Æ' 、 à 、 ì 、 î 、 ï 、 ó 、 ò 、 ô 、 ö 、 õ 、 ø 、 Å“ 、 ß 等等。
请帮助我解决这个问题并建议使用命令删除一堆奇怪的字符。
答案1
该perl
命令可轻松对一组文件进行操作。无需grep
搜索文件以查找特定字符串,然后通过管道将这些文件名传递xargs
给然后至perl
。即使任何文件的名称中包含空格这种简单情况也肯定会中断。
为什么不执行以下操作,例如删除无效字符?
perl -pi -e 's/[—Ç…]//g' *.txt
或者,删除非 ASCII 字符:
perl -pi -e 's/[^[:ascii:]]//g' *.txt
或者,用另一个字符替换某个字符:
perl -pi -e 's/ú/u/g' *.txt