root/other-projects/gti/remove_extra_lines.sh @ 30419

Revision 29457, 1.8 KB (checked in by ak19, 5 years ago)

When processing files updated after doing the translation submission step, want to check if all that has changed in any given file is comments and extra (empty) lines. For GS3 translations, lots of files get created or marked as modified, yet they may not actually contain anything substantial.

  • Property svn:executable set to *
Line 
1#! /bin/bash
2
3cp $1 $1.bak
4
5CLEANVERSION_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
12sed '/ *# -- Missing translation/d' $1 > $CLEANVERSION_NAME
13mv $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
18cat $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
24cat $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
33sed -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
37if [[ ! -s $CLEANVERSION_NAME ]] ; then
38    echo "@@@ $1 only has comments and empty lines/spaces."
39fi ;
40rm $CLEANVERSION_NAME
41
42
43echo "**** cleaned version $1"
44echo "**** pre-cleaned original is in $1.bak"
Note: See TracBrowser for help on using the browser.