#!/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
mas estou recebendo um erro como
./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected
Responder1
O problema é a referência de variável sem aspas $line
em qualquer
found=$( grep M $line )
e/ou
echo $count")" $line >> filesave.txt`
em ambos os casos $line
devem estar entre aspas duplas:
found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`
O exemplo usa as linhas de log1.txt
como nomes de arquivos, o que pode não ser o que você deseja. Se você quiser pesquisar cada linha lida log.txt
pela string M
, você pode usar isto:
found="$( echo "$line" | grep M )"
Depois disso, $found
seria igual $line
apenas se $line
contivesse a letra M
.