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?
wc stands for Word Count, although it can also count characters and lines. This makes it a flexible tool for counting any kind of items. It is most commonly used to count the number of lines in a file, or (as with most Unix tools) in any other data sent to it, but it can count characters and words, too.
-L: The 'wc' command allow an argument -L, it can be used to print out the length of longest (number of characters) line in a file. So, we have the longest character line Arunachal Pradesh in a file state. txt and Hyderabad in the file capital.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With