How to remove comments from a bash script?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to remove comments from a bash script?
Prev   Next
# 1  
Old 06-22-2012
Question How to remove comments from a bash script?

I would like to remove comments from a bash script. In addition, I would like to remove lines that consist of only white spaces, and to remove blank lines.

Code:
#!/bin/bash
perl -pe 's/ *#.*$//g' $1 | grep -v ^[[:space:]]*$ | perl -pe 's/  +/ /g' > $2
#
# $1 INFILE
# $2 OUTFILE


The above code seemed to work at first. Unfortunately, however, I found later that the above code destroys the following two special variables.

${#ARRAY[@]} the number of array elements
$# the number of shell arguments

A workaround is to replace "${#" and "$#" with words that do not appear in the input file before applying the above code.


Code:
sed 's/${#/__UNUSUALWORD1__/g ; s/$#/__UNUSUALWORD2__/g' in.txt | \
perl -pe 's/ *#.*$//g' | grep -v ^[[:space:]]*$ | perl -pe 's/  +/ /g' | \
sed 's/__UNUSUALWORD1__/${#/ ; s/__UNUSUALWORD2__/$#/' > out.txt


However, the preparatory replacement is awkward. I would like to modify 's/ *#.*$//g' so that it will not match "${#" or "$#". Does anyone know a better solution?

Bash comments always start with #. However, the problem is that bash allows some exceptions where # does not lead a comment, as shown below.

Code:
${#ARRAY[@]} the number of array elements
$# the number of shell arguments
\# escaped by a backslash.
'abcd#efgh' protected by quotes
"abcd#efgh" protected by quotes

Does anyone know how to remove comments from bash scripts without destroying the exempted #'s that do not lead comments? (In addition, I would like to remove lines that consist of only white spaces, and to remove blank lines.)

Many thanks in advance.

Last edited by methyl; 06-22-2012 at 11:33 AM.. Reason: more code tags
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove comments like pattern from text

Hi , We need to remove comment like pattern from a code text. The possible comment expressions are as follows. Input BizComment : Special/*@ Name:bzt_53_3aea640a_51783afa_5d64_0 BizHidden:true @*/ /* lookup Disease Category Therapuetic Class */ a=b;... (6 Replies)
Discussion started by: VikashKumar
6 Replies

2. Shell Programming and Scripting

Bash script to find comments in file

As I stated in a previous thread - I'm a newbie to Unix/Linux and programming. I'm trying to learn the basics on my own using a couple books and the exercises provided inside. I've reached an exercise that has me stumped. I need to write a bash script that will will read in a file and print the... (11 Replies)
Discussion started by: ksmarine1980
11 Replies

3. UNIX for Dummies Questions & Answers

Remove SAS comments using UNIX

I have tried a lot, Need your help guys. SAS Program: data one ; /* Data step */ Input name $; /*Dec variables*/ I want to remove the commented part(/* Data step */) alone. I have tried using sed command but it is deleting the entire line itself. i need unix command to separate this and... (1 Reply)
Discussion started by: saaisiva
1 Replies

4. Shell Programming and Scripting

sed remove comments

I need to use sed to remove comments from files. I am using this, but it only works on comments that start at the beginning of the line. sed /^"\/\/"/d In most of the files I have comments like this: code // Comments or tab // Comments (5 Replies)
Discussion started by: gravesit
5 Replies

5. Shell Programming and Scripting

sed remove css comments

Is there a way that I can use sed to remove lines with css comments like this? /* comment */ (9 Replies)
Discussion started by: gravesit
9 Replies

6. UNIX for Dummies Questions & Answers

Remove blank lines and comments from text file

Hi, I am using BASH. How can I remove any lines in a text file that are either blank or begin with a # (ie. comments)? Thanks in advance. Mike (3 Replies)
Discussion started by: msb65
3 Replies

7. Shell Programming and Scripting

Sed script, changing all C-comments to C++-comments

I must write a script to change all C++ like comments: // this is a comment to this one /* this is a comment */ How to do it by sed? With file: #include <cstdio> using namespace std; //one // two int main() { printf("Example"); // three }//four the result should be: (2 Replies)
Discussion started by: black_hawk
2 Replies

8. Shell Programming and Scripting

how can i remove comments in random positions in a file?(bash)

Suppose i have a file like this: #bla bla #bla bla bla bla bla Bla BLA BLA BLA #bla bla .... .... how can i remove all comments from every line,even if they are behind commands or strngs that are not comments? any idea how i could do that using awk? (2 Replies)
Discussion started by: bashuser2
2 Replies

9. Shell Programming and Scripting

please explain this sed shell script to remove C++ comments.

#! /bin/sed -nf # Remove C and C++ comments, by Brian Hiles (brian_hiles@rocketmail.com) # Sped up (and bugfixed to some extent) by Paolo Bonzini (bonzini@gnu.org) # Works its way through the line, copying to hold space the text up to the # first special character (/, ", '). The original... (1 Reply)
Discussion started by: Priyaranjan
1 Replies

10. UNIX for Dummies Questions & Answers

Remove comments...

It may be a no-brainer, but the answer is escaping me right now: I'm trying to write a little script to remove all comments from .c source... I was thinking sed, but I'm not a very strong regexp user (e.g. I suck with sed). I tried dumping the file into: sed -e 's/\/\* * \*\///g' and several... (1 Reply)
Discussion started by: LivinFree
1 Replies
Login or Register to Ask a Question