Text File
using sort -s
(case sensitive)
Act Bad Bag Card East about across back ball camera canvas danger dark early edge
using sort -f (Not case sensitive)
about across Act back Bad Bag ball camera canvas Card danger dark early East edge
The words starting with an uppercase are sorted alphabetically between the lowercase words.
What I want is that the words in uppercase are at the start of each next letter (upercase alphabetically sorted):
Expected output:
Act about across Bad Bag back ball Card camera canvas danger dark East early edge
How can I realize this using bash or python sort command?
Advertisement
Answer
This command will do it:
LC_ALL=C sort -k 1.1f,1.1 PATH
where PATH
is your file path.
Explanation:
sort
collation order is affected by the current locale, soLC_ALL=C
is used to set the locale to a known value (the POSIX locale, collation order based on ASCII character code values)-k 1.1f,1.1
tellssort
to use the first character as the primary sort key in a case-insensitive manner- Equal comparisons of the primary key will be resolved by comparing all characters again (this time, in a case-sensitive manner).
The output is exactly as requested in the question.