
Я пытаюсь распечатать все слова с ошибками (например, «rools hatte»).
Но мне постоянно выдают ошибку
sed: -e выражение #1, символ 17: незавершенная команда `s'
Я пробовал разные способы, которые нашел на этом сайте и в других местах, но все равно получаю эту ошибку.
linecount="$(wc -l < misspelled)"
echo -e "MISSPELLED: \t\t\t CORRECT:"
for NUM in 'seq $linecount'
do
sed "${NUM}q;d" misspelled
done
решение1
У вас неправильный тип кавычек вокруг seq $linecount
. У вас одинарные кавычки, из-за которых вся фраза рассматривается как одна строка. Если вы хотите выполнить ее и использовать результаты, вам нужны обратные кавычки:
`seq $linecount`
или, что еще лучше, используйте $(...)
синтаксис, который делает то же самое
for num in $(seq $linecount)
или вы можете сделать это вообще без другой программы:
num=1
while [ "$num" -le "$linecount" ]; do
...
((num=num+1))
done
Если вы пытаетесь распечатать первые N
строки файла, вам, вероятно, следует использовать просто head
:
head -n "$linecount" misspelled