#!/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
aber ich bekomme einen Fehler wie
./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected
Antwort1
Das Problem ist eine Variablenreferenz ohne Anführungszeichen $line
in
found=$( grep M $line )
und/oder
echo $count")" $line >> filesave.txt`
sollte in beiden Fällen $line
in doppelte Anführungszeichen gesetzt werden:
found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`
Das Beispiel verwendet die Zeilen von als Dateinamen, was möglicherweise nicht das ist, was Sie wollen. Wenn Sie jede gelesene Zeile von nach der Zeichenfolge log1.txt
durchsuchen möchten , können Sie Folgendes verwenden:log.txt
M
found="$( echo "$line" | grep M )"
Danach $found
wäre $line
nur noch gleich, wenn $line
der Buchstabe enthalten wäre M
.