Wc -l дает неверный результат
Я получил неправильный результат из команды wc -l
. После долгого:( проверяя найденный ядро проблемы, вот симуляция:
$ echo "line with end" > file
$ echo -n "line without end" >>file
$ wc -l file
1 file
здесь две строки, но отсутствует последняя "\n". Любое простое решение?
Ответы
Ответ 1
В строке wc
заканчивается "\n" char. Один из решений - grep-ing линий. Grep не ищет окончания NL.
например.
$ grep -c . file #count the occurrence of any character
2
вышеуказанное не будет считать пустые строки. Если вы хотите, используйте
$ grep -c '^' file #count the beginnings of the lines
2
Ответ 2
из man-страницы wc
-l, --lines
print the newline counts
сформировать справочную страницу echo
-n do not output the trailing newline
поэтому у вас есть 1
newline
в вашем файле и, таким образом, wc -l
показывает 1
.
Вы можете использовать следующую команду awk
для подсчета строк
awk 'END{print NR}' file