1

is there anyone has an idea about how to remove hidden characters from a string in shell. this is an exemple :

#echo $a;
[root@localhost ~]#

but when i showw hidden characters :

#echo $a | cat -v
[root@localhost ~]# ls ^H^[[K^H^[[K^H^[[Kpwd^H^[[K^H^[[K^H^[[Kls^H^[[K^H^[[Kpwd^H^[[K^H^[[K^H^[[K

i want to delete hidden characters to have this output

#echo $a | cat -v
[root@localhost ~]#

1 Answers1

0

Use sed to strip out the non-printing characters:

echo $a | sed 's/[^ -~]//g' | cat -v

Or to store it:

a=$(echo $a | sed 's/[^ -~]//g')
L. Scott Johnson
  • 1,462
  • 1
  • 7
  • 16
  • hello , thank for your answer but in the output it's give me "[@ ~]# [[[[[[[[ [[[[[[[[[[[" i want to have the output without the hidden characters . – Kamal Ezzaki May 20 '19 at 12:30
  • You have not tried out your answer. Try it against the output of `printf '[root@localhost ~]# ls \b\e[K\b\e[[K\b\e[Kpwd\b\e[K\b\e[K\b\e[K' ` to see how wrong it goes. – JdeBP May 20 '19 at 12:31
  • Ah, you also want to remove escape sequences in addition to non-printing characters. A second sed will accomplish that. I'll edit my answer... – L. Scott Johnson May 20 '19 at 12:33
  • ... or nm, see the post JdeBP linked in the comment to the main question. – L. Scott Johnson May 20 '19 at 12:34