Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

How do I remove control characters?

by Grunk (Initiate)
on May 07, 2002 at 21:30 UTC ( #164831=categorized question: print w/replies, xml ) Need Help??
Contributed by Grunk on May 07, 2002 at 21:30 UTC
Q&A  > regular expressions


Description:

I have a korn shell at work that strips all the control characters (octal 041-176). I'm trying to write a job in perl to do the same to do some speed comparisons.

My question is, how do I specify to sub a range of octal values to a space (default)?
something like
s/!(octal value 041-176)/ /g

Answer: How do I remove control characters?
contributed by jsprat

Try perldoc perlop and look for the transliteration operator.

tr/\040-\176/ /c;
The 'c' option means complement the range.
Note: you may have to binmode the filehandle, depending on your OS.
Answer: How do I remove control characters?
contributed by tachyon

tr/// is better but all you needed to make your pseudocode real perl code was:

s/[^\040-\176]/ /g

Note that the control chars are \000 - \037 so these are perhaps more direct:

tr/\000-\037/ /; # best option for speed s/[\000-\037]/ /g # but this still works

Note chr 32 dec 040 octal is the space so you were double spacing your spaces by starting at \041

Answer: How do I remove control characters?
contributed by kgsz

For similiar problem (removing colors):

For shell:

cat something | perl -le 'while (<>) {chomp; s/[\000-\037]\[(\d|;)+m// +g; print ($_) };'

In generic:
# sth; sth; { s/[\000-\037]\[(\d|;)+m//g; } # sth else;
ANSI colors looks like :) ^[[number[;number]m - reset: ^[[m

Please (register and) log in if you wish to add an answer



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [davido]: so last -f /var/run/utmp on ubuntu provides similar (though more verbose) info
    [oiskuu]: glibc getlogin just does ttyname() and falls back on getutline(); it's not security related at all. (reminds me of sendmail and remote finger services of the naive early spam era)
    [Corion]: But yes, "who started this process" is interesting information :)
    [tye]: no, I really believe that "login user" was added as a fundamental bit of info about each process in order to enhance the usefulness of auditing
    [Corion]: Ah - if that information is saved in a file, then you could theoretically spam that file and confuse getlogin(). So, don't use it for authentication :)
    [tye]: that is what getlogin() certainly *used* to do. I don't believe that is what it certainly should do.
    [davido]: /var/run/utmp is 664 i think.
    [tye]: Note that my "man getlogin" says that it uses stdin when it should use /dev/tty (calling a glibc bug). But that does not appear to be the case when I test it. But maybe Perl's getlogin() is not using glibc's getlogin().
    [oiskuu]: well, run a strace and see what the getlogin does for you.... As I said. SELinux probably has those security labels. But not regular linux.
    [tye]: for example, read https://unix. stackexchange.com/ questions/146138/ loginuid-should-be -allowed-to-change -or-not-mutable-or -not

    How do I use this? | Other CB clients
    Other Users?
    Others avoiding work at the Monastery: (9)
    As of 2017-06-23 19:44 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      How many monitors do you use while coding?















      Results (554 votes). Check out past polls.