Jeg kom frem til et script som nedenstående:
#!/bin/bash
rm newfile
ls -1 *.html | while read file
do
grep -v DELIMITER $file > newfile
mv newfile $file
#
YEAR=$(echo "$file" | cut -d"." -f1)
#
# make sure head/date-line is on its own line
cat $file | sed 's. *
.\n
.g' > tmpfile
mv tmpfile $file
#
# main loop starts here
#
cat $file |grep -v "^$"| while read line
do
echo "$line" | grep -q ".. ... ${YEAR}.*"
rc=$?
if [ $rc -eq 0 ]; then
date=$(echo "$line" | grep -o ".. ... ${YEAR}")
CCYY=$(echo $date | cut -d" " -f3)
MM=$(echo $date | cut -d" " -f2 |tr 'A-Z' 'a-z')
# convert month name to month number
case "$MM" in
jan) MM=01 ;;
feb) MM=02 ;;
mar) MM=03 ;;
apr) MM=04 ;;
may) MM=05 ;;
maj) MM=05 ;;
jun) MM=06 ;;
jul) MM=07 ;;
aug) MM=08 ;;
sep) MM=09 ;;
oct) MM=10 ;;
okt) MM=10 ;;
nov) MM=11 ;;
dec) MM=12 ;;
esac
#
DD=$(echo $date | cut -d" " -f1)
newfile="${CCYY}-${MM}-${DD}T12_30_45.txt"
echo $newfile > newfile
touch $newfile
cat pre >> $newfile
echo $newfile
else
# get filename
newfile=$(cat newfile)
if [ "X$newfile" = "X" ]; then
echo "newfile not set? Missing date line?"
exit 1
else
echo "$line" >> $newfile
fi
fi
done
done
ls -1 *.txt | while read file
do
cat post >> $file
date=$(echo $file | cut -d"T" -f1)
cat $file | sed "s/^DATE:/DATE: $date/" > tmpfile
mv tmpfile $file
done
Det tager mine filer med navn 2002.html, 2003.html og så videre, og laver en templatefil til nanoblogger per indlæg, dvs i hver fil findes dato-linjerne, der adskiller indlæggene, og der laves en fil med datoen som navn, indeholdene linjerne frem til næste dato-linje.
Der er noget tilretning stadigvæk, med relative links mellem indlæggene, og andre ting, som jeg tager løbende.