使用 Grep 和 Sed 命令进行搜索和替换

使用 Grep 和 Sed 命令进行搜索和替换

我想从一堆文本文件中删除奇怪的/特殊字符。在这里,我使用以下命令删除奇怪的字符,但它给了我错误。

命令 :

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

相关内容