Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
613 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 Answer

0 votes
by (71.8m points)

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

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...