1 | #! /bin/bash
|
---|
2 |
|
---|
3 | cp $1 $1.bak
|
---|
4 |
|
---|
5 | CLEANVERSION_NAME="$1.clean"
|
---|
6 |
|
---|
7 | # echo $1
|
---|
8 |
|
---|
9 | # Removing lines that will become completely empty after sed operation
|
---|
10 | # http://soft.zoneo.net/Linux/remove_empty_lines.php
|
---|
11 | # http://www.grymoire.com/Unix/Sed.html#uh-30
|
---|
12 | sed '/ *# -- Missing translation/d' $1 > $CLEANVERSION_NAME
|
---|
13 | mv $CLEANVERSION_NAME $1
|
---|
14 |
|
---|
15 | # Now we got rid of all the empty lines created by removing "Missing translation" lines
|
---|
16 | # We remove any lines containing "Missing translation" but also containing other stuff
|
---|
17 |
|
---|
18 | cat $1 | sed -e 's/# -- Missing translation:.*$//' > $CLEANVERSION_NAME
|
---|
19 |
|
---|
20 | # Remove comment of form: #Updated 21-Nov-2011 by <name>
|
---|
21 | # The date can be either 1 or 2 digits. It need not be followed by "by <name>"
|
---|
22 | #cat $CLEANVERSION_NAME | sed -e 's/# Updated \d\d-[a-zA-Z]{3}-\d{4} by.*$//' > $1
|
---|
23 | #cat $CLEANVERSION_NAME | sed -e 's/ *# Updated .* (by.*)?$//' > $1
|
---|
24 | cat $CLEANVERSION_NAME | sed -e 's/ *# Updated .[0-9]*\-...\-.....*$//' > $1
|
---|
25 |
|
---|
26 | # To test if there were ultimately no relevant changes, work on the temporary *.clean file:
|
---|
27 | # remove all lines that are merely empty/spaces
|
---|
28 | # and any lines that are purely comments (though these may start with spaces)
|
---|
29 | # Then test if the *.clean file is non-empty at the end of it
|
---|
30 | # double sed operation to remove all comments and then all empty lines:
|
---|
31 | # http://stackoverflow.com/questions/22080937/bash-skip-blank-lines-when-iterating-through-file-line-by-line
|
---|
32 | #cat $1 | sed -e 's/^\s*(#.*)$//' > $CLEANVERSION_NAME
|
---|
33 | sed -e '/\s*#.*$/d' -e '/^\s*$/d' $1 > $CLEANVERSION_NAME
|
---|
34 |
|
---|
35 | # if the *.clean file is actually empty, print a message
|
---|
36 | # http://www.unix.com/shell-programming-and-scripting/21753-check-if-file-empty.html
|
---|
37 | if [[ ! -s $CLEANVERSION_NAME ]] ; then
|
---|
38 | echo "@@@ $1 only has comments and empty lines/spaces."
|
---|
39 | fi ;
|
---|
40 | rm $CLEANVERSION_NAME
|
---|
41 |
|
---|
42 |
|
---|
43 | echo "**** cleaned version $1"
|
---|
44 | echo "**** pre-cleaned original is in $1.bak"
|
---|