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?
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, so LC_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
tells sort
to use the first character as the primary sort key in a case-insensitive mannerThe output is exactly as requested in the question.
I managed to do it! Here it is (in Python):
import string
words = [...]
newwords = sorted(words, key=lambda x: [ord(y) if y in string.lowercase else ord(y.lower()) - 0.5 for y in x])
print(newwords)
Output:
['Act', 'about', 'across', 'Bad', 'Bag', 'back', 'ball', 'Card', 'camera', 'canvas', 'danger', 'dark', 'East', 'early', 'edge']
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