# ### linkxml.sh ### ### Usage: ### ### linkxml.sh linkdir file.html phrase ### ### Create link to file.html in all html ### files under linkdir that have phrase ### ### Run this from the directory where file.html is located ### ### if [ "$3" = "" ] then echo "Usage: $0 linkdir filename phrase" exit 1 fi linkdir=$1 file=$2 key1=$3 key2=$4 key3=$5 key4=$6 path=`pwd | sed "s,/var/www,," | sed "s,/,/,g"` phrase=$key1 if [ "$key2" != "" ] then phrase="${key1} ${key2}" fi if [ "$key3" != "" ] then phrase="${key1} ${key2} ${key3}" fi if [ "$key4" != "" ] then phrase="${key1} ${key2} ${key3} ${key4}" fi if [ "$linkdir" = "" ] then echo "Must enter link directory" exit 1 fi echo "Looking for $grep" #for i in `find $linkdir -name \*.xml.html -print | grep -v "/$file" ` for i in `find $linkdir -name \*.htm\* -print | grep -v "/$file" ` do if `grep -w "lt;$grep" $i >/dev/null 2>/dev/null` then atag=`/usr/local/bin/atag.sh $i $grep` if `echo $atag | grep 1 >/dev/null 2>/dev/null` then echo "disqualified atag" continue fi titletag=`/usr/local/bin/titletag.sh $i $grep` if `echo $titletag | grep 1 >/dev/null 2>/dev/null` then echo "disqualified titletag" continue fi h1tag=`/usr/local/bin/h1tag.sh $i $grep` if `echo $h1tag | grep 1 >/dev/null 2>/dev/null` then echo "disqualified h1tag" continue fi # Atag=`/usr/local/bin/Atag.sh $i $grep` # if `echo $Atag | grep 1 >/dev/null 2>/dev/null` # then # echo "disqualified Atag" # continue # fi TITLEtag=`/usr/local/bin/TITLEtag.sh $i $grep` if `echo $TITLEtag | grep 1 >/dev/null 2>/dev/null` then echo "disqualified TITLEtag" continue fi H1tag=`/usr/local/bin/H1tag.sh $i $grep` if `echo $H1tag | grep 1 >/dev/null 2>/dev/null` then echo "disqualified H1tag" continue fi xfile=`echo $file | sed "s/\////g"` p="http://www.setgetweb.com${path}/${xfile}" echo " " echo "Creating link in:" echo " $i" echo " " echo "using the phrase: " echo " $grep" echo " " ### ### The syntax below fails if term is on line twice, with one bad term and one good term. ### It matches against the good term, and then replaces the bad term. For example ### if term is target, and the line contains "xyztargetxyz" and " target ", it will match ### against the latter, and replace the former. Quel dommage. ### #sed "/[ \.,\'\/\"(]$grep[ ,;\'\"($]/s/$phrase/<a href=\"$p\">$phrase<\/a>/" $i | \ ### ### Here is the compromise syntax ### sed "s/lt;$grep /lt;<a href=\"$p\">$phrase<\/a> /" $i | \ sed "s/lt;$grep\//lt;<a href=\"$p\">$phrase<\/a>\//g" | \ sed "s/lt;$grep$/lt;<a href=\"$p\">$phrase<\/a>/" | \ sed "s/lt;$grep>/lt;<a href=\"$p\">$phrase<\/a>>/" | \ sed "s/lt;$grep&gt;/lt;<a href=\"$p\">$phrase<\/a>>/" | \ sed "s///\//g" > tmp.$$ mv tmp.$$ $i #sed "s/>$grep\&lt;/><a href=\"$p\">$phrase<\/a>\&lt;/" | \ fi done