Bestimmte Dateizeilen ausdrucken

Bestimmte Dateizeilen ausdrucken

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

NWenn Sie jedoch versuchen, die ersten Zeilen der Datei auszudrucken , sollten Sie wahrscheinlich einfach Folgendes verwenden head:

head -n "$linecount" misspelled

verwandte Informationen