我正在尝试验证一些输入以删除一组字符。只允许字母数字字符加上加号、句点、下划线和连字符。我已经在这里http://gskinner.com/RegExr/测试了正则表达式
我的最终目标是输入
我尝试过:
[^\w.-]
,它匹配了我想要删除的内容,所以我不确定为什么sed
返回相反的结果。我错过了什么吗?我的最终目标是输入
"Â10.41.89.50 "
并得到"10.41.89.50"
。我尝试过:
echo "Â10.41.89.50 " | sed s/[^\w.-]//g
返回...
echo "Â10.41.89.50 " | sed s/[\w.-]//g
和echo "Â10.41.89.50 " | sed s/[\w^.-]//g
都返回Â10418950
我尝试了在这里找到的答案Skip/remove non-ascii character with sed,但没有任何东西被删除。
sed
命令后添加-r
选项,这样它就可以识别扩展正则表达式。 - Barmarsed
不理解像\w
这样的特殊字符类。只需使用[a-zA-Z0-9_-]
。 - Mark Reed-r
也不是使用[a-zA-Z0-9_-]
。 好的echo "Â10.41.89.50 " | sed s/[a-zA-Z0-9.-]//g
返回了Â
但是echo "Â10.41.89.50 " | sed s/[^a-zA-Z0-9.-]//g
仍然返回了Â10.41.89.50
。 - wanderingandy