Getting the character count of the last line


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Getting the character count of the last line
# 1  
Old 12-03-2012
Getting the character count of the last line

I need the character count of the last line of each file in a directory, and not the total.

Now I have been doing this but unfortunately, -exec doesn't support pipes:
Code:
find sent/ -type f -exec tail -1|wc -c {} \;

If I try this:
Code:
find sent/ -type f -exec tail -1 {} \; | wc -c

It will give me the total count of characters of ALL the last lines of ALL files. I would just like to have it listed for each file, if possible Smilie

Anyway around the usage of pipes?
# 2  
Old 12-03-2012
Why don't you use a loop:-
Code:
for file in sent/*
do
   tail -1 $file | wc -c 
done

OR
Code:
for file in $( find sent/ -type f )
do
   tail -1 $file | wc -c 
done

OR you can write a script which will tail last line and get character count, then call it in find:-
Code:
# cat char_last.sh
file=$1
echo "$( tail -1 $file | wc -c ) \t $file"

Code:
find sent/ -type f -exec ./char_last.sh {} \;


Last edited by Yoda; 12-03-2012 at 05:31 PM..
This User Gave Thanks to Yoda For This Post:
# 3  
Old 12-03-2012
Hi MIA651,

One way using perl. It prints the file name, a colon and the number of characters in last line:
Code:
$ perl -lne 'if ( eof ) { printf qq|%s: %d\n|, $ARGV, length; }' *
3.txt: 12
AAAB.txt: 10
AAAC.txt: 26
file.data: 4

This User Gave Thanks to birei For This Post:
# 4  
Old 12-03-2012
Using awk in the find command:

Code:
find sent/ -type f -exec awk 'END{printf("%d\t%s\n",length($0),FILENAME)}' {} \;

Prints out number of characters and then the filename.
This User Gave Thanks to in2nix4life For This Post:
# 5  
Old 12-03-2012
Try:
Code:
find sent/ -type f -exec tail -1 {} \; | awk '{print length}'

To also count the linefeed at the end of the line, like wc -c or wc -m use awk '{print length+1}'



--
Use wc -c counts bytes, BTW. To count (multibyte) characters use wc -m

Last edited by Scrutinizer; 12-03-2012 at 06:27 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 12-03-2012
Thank you very much all... From an earlier deleted post, I got the idea and it this is what I've done to have it also print the filename along with it, as you all have got it doing anyway.

Code:
find sent/ -type file | while read FILE;
do
 print $FILE
 tail -1 $FILE| wc -c
done

# 7  
Old 12-04-2012
This would break if there are file names with spaces and/or special characters. To avoid that you would need to use properly quoting:
Code:
print "$FILE"
tail -1 "$FILE"

Also, wc -c only counts bytes, so with multibyte characters you would end up with the wrong number. To avoid that use wc -m. For example:

Code:
$ echo 'eé' | wc -c
       4
$ echo 'eé' | wc -m
       3
$ printf "%s" 'eé' | wc -m
       2

As you can see, they both count the linefeed at the end, you may or may not want that...



--
The semicolon after while read FILE is not necessary...

Last edited by Scrutinizer; 12-04-2012 at 05:57 AM..
These 2 Users Gave Thanks to Scrutinizer For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Count specific character of a file in each line and delete this character in a specific position

I will appreciate if you help me here in this script in Solaris Enviroment. Scenario: i have 2 files : 1) /tmp/TRANSACTIONS_DAILY_20180730.txt: 201807300000000004 201807300000000005 201807300000000006 201807300000000007 201807300000000008 2)... (10 Replies)
Discussion started by: teokon90
10 Replies

2. Shell Programming and Scripting

Character count of each line

Hi, I have a file with more than 1000 lines. Most of the lines have 16 characters. I want to find out lines that have less than 14 characters (usually 12 or 13). wc -l gives me the line count and wc -c gives me the total characters in a file. I could not get the total characters for each line.... (1 Reply)
Discussion started by: bobbygsk
1 Replies

3. UNIX for Dummies Questions & Answers

Script to count character present in a line

Suppose i have multiple line like below in a file. ASDFAFAGAHAHAHA AGAHAHAJGAFAGAH AHAHAKAHAHAHAKA I need a bash script to count a character and also Also count the number of character present in each line . suppose for line 1: A=x, S=y, D=x and so on and total character=15. where x y and z is... (3 Replies)
Discussion started by: XXLMMN
3 Replies

4. Shell Programming and Scripting

Delete line based on count of specific character

I'm looking for what I hope might be a one liner along these lines: sed '/a line with more than 3 pipes in it/d' I know how to get the pipe count in a string and store it in a variable, but I'm greedy enough to hope that it's possible via regex in the /.../d context. Am I asking too much? ... (5 Replies)
Discussion started by: tiggyboo
5 Replies

5. Shell Programming and Scripting

Count character in one line

Please check the attachment for the example. Purpose: count how many "|" character in one line and also display the line number. expect result: Line 1 : there are 473 "|" characters Line 2 : there are 473 "|" characters I have tried to use awk to count it, it's ok when the statistic... (8 Replies)
Discussion started by: ambious
8 Replies

6. UNIX for Advanced & Expert Users

Count specific word or character per line

Hi, I need help regarding counting specific word or character per line and validate it against a specific number i.e 10. And if number of character equals the specific number then that line will be part of the output. Specific number = 6 Specific word or char = || Sample data:... (1 Reply)
Discussion started by: janzper
1 Replies

7. Shell Programming and Scripting

awk: sort lines by count of a character or string in a line

I want to sort lines by how many times a string occurs in each line (the most times first). I know how to do this in two passes (add a count field in the first pass then sort on it in the second pass). However, can it be done more optimally with a single AWK command? My AWK has improved... (11 Replies)
Discussion started by: Michael Stora
11 Replies

8. Shell Programming and Scripting

Looking for a single line to count how many times one character occurs in a word...

I've been looking on the internet, and haven't found anything simple enough to use in my code. All I want to do is count how many times "-" occurs in a string of characters (as a package name). It seems it should be very simple, and shouldn't require more than one line to accomplish. And this is... (2 Replies)
Discussion started by: Shingoshi
2 Replies

9. UNIX for Dummies Questions & Answers

How to count the occurence of a character in a line

Suppose i have data like :- 1,2,3,4,5 a,b,c x,y,z,t I want to count the occurence of , (comma) in every line. Waiting for a solution. (5 Replies)
Discussion started by: sumit207
5 Replies

10. UNIX for Advanced & Expert Users

How to count the occurence of a character in a line

Suppose i have data like :- 1,2,3,4,5 a,b,c x,y,z,t I want to count the occurence of , (comma) in every line. Waiting for a solution.:) (1 Reply)
Discussion started by: sumit207
1 Replies
Login or Register to Ask a Question