سؤال

I got wrong result from the wc -l command. After a long :( checking a found the core of the problem, here is the simulation:

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

here are two lines, but missing the last "\n". Any easy solution?

هل كانت مفيدة؟

المحلول

For the wc line is what ends with the "\n" char. One of solutions is grep-ing the lines. The grep not looking for the ending NL.

e.g.

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

the above will not count empty lines. If you want them, use the

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

نصائح أخرى

from man page of wc

 -l, --lines
              print the newline counts

form man page of echo

 -n     do not output the trailing newline

so you have 1 newline in your file and thus wc -l shows 1.

You can use the following awk command to count lines

 awk 'END{print NR}' file
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top