Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Command to Hide Comments

Posted on 2002-07-09
13
Medium Priority
?
207 Views
Last Modified: 2013-12-15
I am often presented with config files modified by someone else and would like to make sure they are correct.
The problem with most config files is that there are only a few lines of active code and often hundreds of lines of comments.

Is there a simple bash command that will cat a file and skip all blank lines and all lines that start with #?

One of my techs wrote a perl script but that seems overkill.

0
Comment
Question by:davidpm
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 2
  • 2
  • +2
13 Comments
 
LVL 38

Expert Comment

by:yuzh
ID: 7142195
use can use the following command line to do the job:

assume your file name is: yourfile.txt

cat yourfile.txt | grep -v "^#" | grep -v "^$" | more

you can redirect to "less" or another file.
0
 
LVL 14

Expert Comment

by:chris_calabrese
ID: 7143371
I'll second that.
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7143970
# only one process needed:
  awk '($1 ~ /^#/){next}(NF==0){next}{print}' file
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:davidpm
ID: 7147748
Thanks ahoffman but I'm ready for another language just yet.

The following works:
cat test.conf | grep -v "^#" | grep -v "^[[:space:]]*$"

The last grep means match if the line only has zero or more whitespace characters in it. This should match space and tab etc.

That last part is a little hard to remember. Is there a trimmer way of doing the same thing?


0
 
LVL 38

Accepted Solution

by:
yuzh earned 200 total points
ID: 7148539
You can define a function in your .profile

eg:

readconf ()
{
cat $1 | | grep -v "^#" | grep -v "^[[:space:]]*$"

}


to use it:

readconf test.conf
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7148647
FYI,
my suggestion works with any flaviour of awk on any UNIX,
"[[:space]]" is GNU-grep (and derivates) only (well, the default on Linux anyway).
And if performance or resources are in question: only one process ;-)
0
 
LVL 3

Expert Comment

by:DVB
ID: 7185552
egrep -v "(^#|^$)" /path/to/file
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7186300
DVB: s/"/'/g
 and it still does not remove all comment lines
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7186305
egrep -v '([ \t]*#|^[ \t]*$)' file
0
 
LVL 14

Expert Comment

by:chris_calabrese
ID: 7189200
What the heck...

egrep -v '^[ \t]*(#|$)' file
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7190003
contest closed?
LOL
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 7313884
wow, the longest (characters and cpu time) suggestion got the grade ;-)

davidpm, could you please explain your decision?

(yuzh, no offence)
0
 
LVL 3

Expert Comment

by:DVB
ID: 7314188
I think it was the easiest to read. Regular expressions can get complicated.
0

Featured Post

TCP/IP Network Protocol Cheat Sheet

TCP/IP is a set of network protocols which is best known for connecting the machines that make up the Internet. The truth is that TCP/IP is one of the oldest network protocols and its survival is mainly based on its simplicity and universality.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Network Interface Card (NIC) bonding, also known as link aggregation, NIC teaming and trunking, is an important concept to understand and implement in any environment where high availability is of concern. Using this feature, a server administrator …
rdate is a Linux command and the network time protocol for immediate date and time setup from another machine. The clocks are synchronized by entering rdate with the -s switch (command without switch just checks the time but does not set anything). …
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
Suggested Courses

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question