Friday, 16 October 2009

Parsing files with Bourne shell

My useful piece of Bourne shell script for the day is a piece of script that goes through .change files in the current directory and copies all the files listed to a different directory. It skips the _sources.change files as well.
for CHANGEFILE in *.changes;
do
str=`echo $CHANGEFILE | grep -v "source.changes"`
if [ -z "$str" ]; then
continue
fi
found="0"
while read line
do
if [ "$found" = "0" ] ; then
if [ "$line" != "Files:" ]; then
continue
else
found="1"
continue
fi
fi

file=`echo $line | cut -d " " -f 5`
cp $file $INCOMING_DIR
done < $CHANGEFILE
cp $CHANGEFILE $INCOMING_DIR
done

The obvious use is to copy the files so we can use "reprepro processincoming" to save packages to a repository.

There are probably smarter ways to do this, but this is pretty portable as it only requires grep and cut, and very minimal functionality from them as well. And even grep is not needed if you want to copy everything.

0 comments:

Post a Comment