kvz.io
Published on

Cat a File, Without the Comments

Authors
  • avatar
    Name
    Kevin van Zonneveld
    Twitter
    @kvz

I recently had to install a couple of squid servers to act as reverse proxies for a webcluster. You can teach the squid server to stand in between in the end users and the webservers, and to store all the static content ( .jpg .flv .css .htm for example ) in the RAM. This saves a lot of I/O and bandwidth on the webservers, and it can really speed up a site. At the end of the road the webservers' load dropped by 92%. But before all this worked, I had to run through a massive config file and since the squid config file is their manual at the same time, it's about 5000 lines long. So I had to find out a way to filter only the important settings from the config file.

This is what I came up with:

$ cat /etc/squid/squid.conf | egrep -v "(^#.*|^$)"

Explained

egrep -v      means leave the following out
^#.*          means patterns that begin with a #
|             means or
^$            means patterns that are empty

Updates

update #1

Thanks to an insightful comment by Darwin Award Winner on this article, here's a version that would also filter comments with spaces before the #, such as comments that are indented with code blocks:

$ cat /etc/squid/squid.conf | egrep -v "^\s*(#|$)"

Thanks Darwin! :wink:

Legacy Comments (8)

These comments were imported from the previous blog system (Disqus).

Darwin Award Winner
Darwin Award Winner·

I would suggest \"^\\s*(#|$)\" as the pattern, since this would also filter comments with spaces before the #, such as comments that are indented with code blocks.

If you also wanted to remove comments at the ends of lines, you could pipe the output through sed \'s/\\s+#.*$//\'

cat /etc/squid/squid.conf | egrep -v \"^\\s*(#|$)\" | sed -e \'s/\\s+#.*$//\'

You could create a script /usr/local/bin/conconf (catconf as in cat config files, or make up a more creative name) with the following contents (remember to make it executable):

#!/bin/sh
cat \"$@\" | egrep -v \"^\\s*(#|$)\" | sed -e \'s/\\s+#.*$//\'

Kevin
Kevin·

@Darwin Award Winner: Those are great suggestions, thanks! I will update the article.

aptgetupdate.de
aptgetupdate.de·

Thanks.

Bash
Bash·

Useless use of cat award!

http://sial.org/howto/shell...

Kev van Zonneveld
Kev van Zonneveld·

@ Bash: Point taken. Though there are two points to be made as well:

- The consistent use of cat can be a good habit to ensure you never modify a file by accident.
- I doubt the extra process will have serious impact on my machine\'s performance. If it does, it\'s time for a new machine :)

jumbe
jumbe·

Thanks for this man.

moein
moein·

<div><h1><a href="http://www.nikgraphic.com"><strong>تبليغات هداياي تبليغاتي طراحي و چاپ</strong> &#1601;&#1575;&#1585;&#1705;&#1587; &#1575;&#1740;&#1585;&#1575;&#1606;</a></h1>
<a href="http://www.nikgraphic.com"><img src="http://www.nikgraphic.com/a..." alt="تبليغات هداياي تبليغاتي طراحي و چاپ" width="32" height="32" border="0"></a>
<h3><a href="http://www.nikgraphic.com">http://www.nikgraphic.com</a></h3></div>

wrr
wrr·

There are many top quality <a href="http://www.oakleysaleonline...">oakley sunglasses sale</a> at oakley sunglasses outlet here.Are you a fair or kiosk vendor and want to minimize setup and tear down times? <a href="http://www.oakleysaleonline...">replica oakley sunglasses</a> offers an inexpensive and creative solution. The <a href="http://www.buyoakleysunglas...">cheap oakley sunglasses</a> display holds 16 pairs of wholesale fashion sunglasses and measures L=16in, W=12.75in and H=2in. The great thing about this folding display is the ultra portability; great for <a href="http://www.buyoakleysunglas...">oakley polarized sunglasses</a> vendors to quickly and easily transport wholesale sunglasses from one location to another.