简体   繁体   中英

Removing special characters in bash

I have a variable "text" which contains the value "IN▒ENJERING" Hex-values: 49 4E B4 45 4E 4A 45 52 49 4E 47 I want to remove the special character B4 .

Now if I remove a regular character (eg "I") using the command

text=$(printf "$text" | sed "s/\x49/ /g")

the command works fine

Result  : text=N▒ENJER NG

If I want to remove the special character, it seems not to work

text=$(printf "$text" | sed "s/\xB4/ /g")  

Result : IN▒ENJERING 

Any idea what is wrong?

This might work for you (GNU sed):

sed 's/\o342\o226\o222/ /g' file

To find the octal representation use:

<<<"IN▒ENJERING" sed -n l
IN\342\226\222ENJERING$

Then to replace each octal character prepend \o and use as a pattern match.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM