用sed跳过/删除非ascii字符

xre*_*ref 11 sed

Chip,Dirkland,DrobæSphereInc,cdirkland @ hotmail.com,usa

我一直在尝试使用sed来修改.csv中的电子邮件地址,但上面的一行仍然让我沮丧,使用如下命令:

sed -i 's/[\d128-\d255]//' FILENAME
Run Code Online (Sandbox Code Playgroud)

从这个stackoverflow问题

似乎没有工作,因为我得到'无效的校对字符'错误.

理想情况下,我根本不想改变组合的AE角色,我宁愿只是跳过它,因为我不是试图操纵该文本而是操纵电子邮件地址.只要那个AE在那里虽然它导致我的sed替换在一行之后失败,但是删除该字符并且它处理整个文件.

有任何想法吗?

pot*_*ong 6

这可能对你有用(GNU sed):

\n\n
echo "Chip,Dirkland,Drob\xc3\xa6Sphere Inc,cdirkland@hotmail.com,usa" |\nsed \'s/\\o346/a+e/g\'\nChip,Dirkland,Droba+eSphere Inc,cdirkland@hotmail.com,usa\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后做你必须做的事情,然后恢复:

\n\n
echo "Chip,Dirkland,Droba+eSphere Inc,cdirkland@hotmail.com,usa" | \nsed \'s/a+e/\\o346/g\'\nChip,Dirkland,Drob\xc3\xa6Sphere Inc,cdirkland@hotmail.com,usa\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您在字符串中包含棘手的字符并且想了解如何sed查看它们,请使用该l0命令(请参阅此处)。对于调试困难的正则表达式也非常有用。

\n\n
echo "Chip,Dirkland,Drob\xc3\xa6Sphere Inc,cdirkland@hotmail.com,usa" | \nsed -n \'l0\'\nChip,Dirkland,Drob\\346Sphere Inc,cdirkland@hotmail.com,usa$\n
Run Code Online (Sandbox Code Playgroud)\n


jca*_*314 5

sed -i 's/[^[:print:]]//' FILENAME
Run Code Online (Sandbox Code Playgroud)

而且,这就像dos2unix