Wc -l дает неверный результат
Я получил неправильный результат от wc -l
команда. После долгой проверки:(обнаружил суть проблемы, вот симуляция:
$ echo "line with end" > file
$ echo -n "line without end" >>file
$ wc -l file
1 file
здесь две строки, но пропущены последние "\n". Любое простое решение?
2 ответа
Решение
Для wc
строка заканчивается символом \n. Одним из решений является поиск линий. Греп не ищет конца NL.
например
$ grep -c . file #count the occurrence of any character
2
выше не будет считать пустые строки. Если вы хотите их, используйте
$ grep -c '^' file #count the beginnings of the lines
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