Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
434 views
in Technique[技术] by (71.8m points)

regex - Removing non-alphanumeric characters with sed

I am trying to validate some inputs to remove a set of characters. Only alphanumeric characters plus, period, underscore, hyphen are allowed. I've tested the regex expression [^w.-] here http://gskinner.com/RegExr/ and it matches what I want removed so I not sure why sed is returning the opposite. What am I missing?

My end goal is to input "?10.41.89.50 " and get "10.41.89.50".

I've tried:

echo "?10.41.89.50 " | sed s/[^w.-]//g returns ?...

echo "?10.41.89.50 " | sed s/[w.-]//g and echo "?10.41.89.50 " | sed s/[w^.-]//g returns ?10418950

I attempted the answer found here Skip/remove non-ascii character with sed but nothing was removed.

question from:https://stackoverflow.com/questions/20007288/removing-non-alphanumeric-characters-with-sed

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

's -c (complement) flag may be an option

echo "?10.41.89.50-._ " | tr -cd '[:alnum:]._-'

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...