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

так что у тебя есть 1newline в вашем файле и, таким образом, wc -l шоу 1,

Вы можете использовать следующее awk команда для подсчета строк

 awk 'END{print NR}' file
Другие вопросы по тегам