error en el script para contar el número de ocurrencias

error en el script para contar el número de ocurrencias
#!/bin/sh
count=1
while read line
do
  found=$( grep M $line )
  if [ "$found" ]; then
    echo $count")" $line >> filesave.txt
  fi
  count=$((count+1))
done < log1.txt

pero recibo un error como

./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected

Respuesta1

El problema es la referencia de variable sin comillas $lineen cualquiera de los dos casos.

found=$( grep M $line )

y/o

echo $count")" $line >> filesave.txt`

en ambos casos $linedebe ir entre comillas dobles:

found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`

El ejemplo utiliza las líneas de log1.txtcomo nombres de archivos, que pueden no ser los que usted desea. Si desea buscar log.txtla cadena en cada línea leída M, puede usar esto:

found="$( echo "$line" | grep M )"

Después de esto, $foundsería igual $linesólo si $linecontuviera la letra M.

información relacionada