Header RSS Feed
If you only want to see the articles of a certain category, please click on the desired category below:
ALL Android Backup BSD Database Hacks Hardware Internet Linux Mail MySQL Monitoring Network Personal PHP Proxy Shell Solaris Unix Virtualization VMware Windows Wyse

The tabulator in bash
Monday - Aug 23rd 2010 - by - (0 comments)

I've just spent interesting 20mins with my boss, trying to figure out why Bash wouldn't recognize our command to not output lines containing tabulator entries.

The problem:

grep -v "\t" tempfile # does not work

Still shows lines with tab-entries. At first we thought maybe Bash has a problem recognizing the tabulator, so my idea was to use sed instead of grep:

sed -e '/\t/d' tempfile # works

It works with sed! So the \t is correctly recognized. Maybe a problem of grep only? After doing several tests, we finally found the solution. First we used an echo to force a tab sign within the grep command:

grep -v "$(echo -ne "\t")" tempfile # works

So as soon as a sub-shell is opened to 'translate' \t into a tab-sign it works, how it is also written in the bash-manpage:

Words of the form $'string' are treated specially.  The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:
\t     horizontal tab

Which leads to the following and final solution:

grep -v $'\t' /tmp/tempfile # works


Add a comment

Show form to leave a comment

Comments (newest first):

No comments yet.

Go to Homepage home
Linux Howtos how to's
Monitoring Plugins monitoring plugins
Links links

Valid HTML 4.01 Transitional
Valid CSS!
[Valid RSS]

6905 Days
until Death of Computers