
Ich versuche, alle falsch geschriebenen Wörter (z. B. „rools hatte“) auszudrucken.
Aber ich bekomme immer wieder den Fehler
sed: -e Ausdruck Nr. 1, Zeichen 17: nicht beendeter „s“-Befehl
Ich habe verschiedene Möglichkeiten ausprobiert, die ich auf dieser Website und anderswo gefunden habe, aber ich erhalte trotzdem immer diesen Fehler.
linecount="$(wc -l < misspelled)"
echo -e "MISSPELLED: \t\t\t CORRECT:"
for NUM in 'seq $linecount'
do
sed "${NUM}q;d" misspelled
done
Antwort1
Sie haben die falsche Art von Anführungszeichen um seq $linecount
. Sie haben einfache Anführungszeichen, die dazu führen, dass die ganze Phrase als einzelne Zeichenfolge behandelt wird. Wenn Sie es ausführen und die Ergebnisse verwenden möchten, benötigen Sie Backticks:
`seq $linecount`
oder, besser noch, verwenden Sie die $(...)
Syntax, die das gleiche tut
for num in $(seq $linecount)
oder Sie können es ganz ohne das andere Programm tun:
num=1
while [ "$num" -le "$linecount" ]; do
...
((num=num+1))
done
N
Wenn Sie jedoch versuchen, die ersten Zeilen der Datei auszudrucken , sollten Sie wahrscheinlich einfach Folgendes verwenden head
:
head -n "$linecount" misspelled