Bah, $read(file,s,word) returns all the text AFTER word. Check $readn instead.
Code:
on @1:TEXT:*:#botsparadise: {  
  var %i = 1 
  while (%i <= $0) {
    .!echo -q $read($scriptdirswearwords.txt,s,$eval($+($,%i),2))
    if ($readn) { var %match = $addtok(%match,$eval($+($,%i),2),44) } 
    inc %i
  } 
  if (%match != $null) { 
    msg $chan Do not use: < $+ $nick $+ > " $+ %match $+ " You will be kicked if it happens again
  }
}