2013-05-14 8 views
13

Я получил неправильный результат от команды wc -l. После того, как долго :(проверка нашел суть проблемы, здесь является моделирование:.?wc -l дает неправильный результат

$ echo "line with end" > file 
$ echo -n "line without end" >>file 
$ wc -l file 
     1 file 

здесь две линии, но не хватает последнего «\ п» Любое простое решение

+0

любая причина использования 'echo -n' и почему вы не можете добавить' \ n' в конце 'echo -n'? – Bill

+1

Вышеупомянутое является ** МОДЕЛИРОВАНИЕ ** проблемы. Я не делаю файлы, только работаю с ними. Я получил их без последнего входа. – novacik

+3

Не используйте отвертку для гвоздей, когда в вашем инструменте есть молот :-) Вы можете _think_ это две строки, но doco для 'wc' не согласен. – paxdiablo

ответ

16

Для wc линии, что заканчивается «\ п» полукокса. Один из решений - grep-ing линий. Греп не ищет окончания NL.

например.

$ grep -c . file  #count the occurrence of any character 
2 

вышеуказанное не будет считать пустые строки. Если вы хотите, используйте

$ grep -c '^' file  #count the beginnings of the lines 
2 
12

от человека страница 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 
Смежные вопросы