用sed替换特殊字符

时间:2019-04-17 11:08:59

标签: shell sed sh

我正在尝试用sed替换特殊字符,用Þ替换;

例如,文件的行是

0370ÞA020Þ4000011600ÞRED USADOÞ0,00Þ20190414
0370ÞA020Þ4000011601ÞRED USADOÞ0,00Þ20190414
0370ÞA020Þ4000011602ÞRED USADOÞ0,00Þ20190414

谢谢!

编辑

它可以解决。

谢谢!

3 个答案:

答案 0 :(得分:1)

尝试一下-对我来说简单的替代工作

sed 's/Þ/;/g'

答案 1 :(得分:1)

创建tr就是要做的工作,但要查看以下结果:

$ tr 'Þ' ';' < file
0370;;A020;;4000011600;;RED USADO;;0,00;;20190414
0370;;A020;;4000011601;;RED USADO;;0,00;;20190414
0370;;A020;;4000011602;;RED USADO;;0,00;;20190414

$ sed 's/Þ/;/g' < file
0370;A020;4000011600;RED USADO;0,00;20190414
0370;A020;4000011601;RED USADO;0,00;20190414
0370;A020;4000011602;RED USADO;0,00;20190414

tr似乎将每个Þ视为2个重复字符-sed可能认为相同,但是tr会将一组字符转换为一组字符时,sed会将其转换将正则表达式转换为字符串,因此即使它认为Þ的宽度为2个字符,它仍然可以执行您想要的操作。因此,关于尝试使用tr替换非ASCII字符-YMMV只是一个有趣的警告!

答案 2 :(得分:0)

如果您的数据位于“ d”文件中,请尝试使用gnu sed:

IBOutlet