Chip,Dirkland,DrobæSphere Inc,cdirkland@hotmail.com,usa
我一直在尝试使用 sed 修改 .csv 中的电子邮件地址,但上面的行一直让我困惑,使用如下命令:
sed -i 's/[\d128-\d255]//' FILENAME
from this stackoverflow question
似乎不起作用,因为我收到“无效排序字符”错误。
理想情况下,我根本不想更改组合的 AE 字符,我宁愿 sed 直接跳过它,因为我不想操纵该文本,而是操纵电子邮件地址。只要该 AE 在那里,尽管它会导致我的 sed 替换在一行后失败,删除该字符并且它可以很好地处理整个文件。
有什么想法吗?
最佳答案
这可能对你有用(GNU sed):
echo "Chip,Dirkland,DrobæSphere Inc,cdirkland@hotmail.com,usa" |
sed 's/\o346/a+e/g'
Chip,Dirkland,Droba+eSphere Inc,cdirkland@hotmail.com,usa
然后做你必须做的事情,然后恢复:
echo "Chip,Dirkland,Droba+eSphere Inc,cdirkland@hotmail.com,usa" |
sed 's/a+e/\o346/g'
Chip,Dirkland,DrobæSphere Inc,cdirkland@hotmail.com,usa
如果您在字符串中包含棘手的字符,并且想要了解 sed 如何看待它们,请使用 l0
命令(请参阅 here )。对于调试困难的正则表达式也非常有用。
echo "Chip,Dirkland,DrobæSphere Inc,cdirkland@hotmail.com,usa" |
sed -n 'l0'
Chip,Dirkland,Drob\346Sphere Inc,cdirkland@hotmail.com,usa$
关于sed - 使用 sed 跳过/删除非 ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8571601/