How to remove a certain symbol for a bash script

18,472

Solution 1

This should do it:

sed 's/%//'

Pipe your string through it for the best results.

Solution 2

There is no need for external tools like tror even sed as bash can do it on its own since forever.

percentage="60%"
number=${percentage%\%}

This statement removes the shortest matching substring (in this case an escaped %) from the end of the variable. There are other string manipulating facilities built into bash. It even supports regular expressions. Generally, most of the stuff you normally see people using tr, sed, awk or grep for can be done using a bash builtin. It's just almost noody knows about that and brings the big guns...

See http://tldp.org/LDP/abs/html/parameter-substitution.html#PSOREX1 for more information.

Solution 3

Instead of sed, use tr.

tr -d '%'

Solution 4

sed is one of the easiest ways

sed -i 's/\%//g' fileName

Solution 5

If the disk usage is in a variable, bash can do the removal as part of a variable substitution:

diskusagepct="60%"
echo "disk usage: ${diskusagepct%\%} percent"  # prints disk usage: 60 percent
diskusagenum="${diskusagepct%\%}"  # sets diskusagenum to 60
Share:
18,472
pmerino
Author by

pmerino

Backend hacker, Ruby lover, iOS/Mac developer

Updated on September 18, 2022

Comments

  • pmerino
    pmerino over 1 year

    I have a bash script where I get the disk usage, for example 60%. How can I remove the % symbol? Using grep or awk?

  • womble
    womble over 12 years
    @joechip: If there's only one %, as per the question, you don't need g.
  • samina
    samina over 12 years
    Good point (+1). tr is faster than sed.