Cut and paste.
Play pretend here for a second. You are a new accountant for a company and you need to make a consolidated financial report of many units. (This example is way over simplified, but I think you will get the idea.) You need to get a report out, but you do not have time to re-enter figures, because all the units send their data in ascii or what is known as text files. How can we get the computer to compile the data so it can be easily entered into the spreadsheet? Heres how!
A good prerequisite for this post is at: http://www.linuxintheshell.org/
A good prerequisite for this post is at: http://www.linuxintheshell.org/
Units one two and three send their data in, but they are in an ascii file. We want to convert them so they can be easily converted for use in a spreadsheet.
From Unit 1 in unit1:
Unit 1
Income: 5000
Expenses 2000
Income: 5000
Expenses 2000
Data from Unit 2 in unit2:
Unit 2
Income 45000
Expenses 46000
Income 45000
Expenses 46000
Data from Unit 3 in unit3:
Unit 3
Income 18000
Expenses 18000
Income 18000
Expenses 18000
Files should look something more like this:
Then after we cut the files they should look like this:
Lets create a program to compile the data. Nice thing about this is all we have to do to add units is use the same type file in the directory. No requirements to change the file. Warning it will kill the old cutitdata, so be sure and back all the files up and and delete ones you do not need. There is of course and easier way, but we will save that for later….
compiledata.sh
[code]
[code]
# Get data from unit files and create .CUT files.
for f in unit?
do
newfile="$f.CUT"
cut -c 12-25 $f > $newfile
done
# create tmpfile.
touch cutfile
rm cutfile
touch cutfile
#create Labels for the file.
echo " " > cutitfile
echo Income: >> cutitfile
echo Expenses >> cutitfile
# put it all together.
for g in unit?.CUT
do
paste --d , cutitfile $g >> cutfile
mv cutfile cutitfile
done
# uncomment the next line if you want to use sc
# psc -d , < cutitfile > Units.sc
for f in unit?
do
newfile="$f.CUT"
cut -c 12-25 $f > $newfile
done
# create tmpfile.
touch cutfile
rm cutfile
touch cutfile
#create Labels for the file.
echo " " > cutitfile
echo Income: >> cutitfile
echo Expenses >> cutitfile
# put it all together.
for g in unit?.CUT
do
paste --d , cutitfile $g >> cutfile
mv cutfile cutitfile
done
# uncomment the next line if you want to use sc
# psc -d , < cutitfile > Units.sc
[/code]
Make an executable file:
$ chmod +x compiledata.sh
Run the program:
$./compiledata.sh
See the result file:
$ cat cutitfile
$ cat cutitfile
, Unit 1, Unit 2, Unit 3
Income:, 5000, 45000, 18000
Expenses, 2000, 46000, 18000
Income:, 5000, 45000, 18000
Expenses, 2000, 46000, 18000
This is what is known as a comma delimited file which most spreadsheets can import easily.
Now we can use the spreadsheet to import the data.
Choose the file:
Using the comma splits out the cells like we want them.
Raw data:
After the window dressing.
If you want to stay completely command line, you can use the program called sc.
You will need to do a conversion though.
You will need to do a conversion though.
$ psc -d , < cutitfile > Units.sc
$ sc Units.sc
$ sc Units.sc
Comments
Post a Comment