I use uniq -c some text file. Its output like this:
123(space)first word(tab)other things
2(space)second word(tab)other things
....
So I need extract total number(like 123 and 2 above), but I can't figure out how to, because if I split this line by space, it will like this ['123', 'first', 'word(tab)other', 'things']
.
I want to know why doesn't it output with tab?
And how to extract total number in shell? ( I finally extract it with python, WTF)
Update: Sorry, I didn't describe my question correctly. I didn't want to sum the total number, I just want to replace (space) with (tab), but it doesn't effect the space in words, because I still need the data after. Just like this:
123(tab)first word(tab)other things
2(tab)second word(tab)other things
Try this:
One possible solution to getting tabs after counts is to write a
uniq -c
-like script that formats exactly how you want. Here's a quick attempt (that seems to pass my minute or so of testing):You can sum all the numbers using
awk
:Based on William Pursell answer , if you like Perl compatible regular expressions (PCRE) maybe a more elegant and modern way would be
Options are to execute (
-e
) and print (-p
).Another solution. This is equivalent to the earlier
sed
solution, but it does useawk
as requested / tagged!