Сортировка строк по тем, которые содержат числа, игнорируя числа, прикрепленные к букве
Мне нужно отсортировать строки в файле так, чтобы строки содержали хотя бы одно число (0-9), не считая числа 1-5, когда им предшествует одна из этих букв ("a", "e", «g», «i», «n», «o», «r», «u», «v» или «u:» (u + :)) перемещаются в конец файла.
Вот пример файла:
I want to buy some food.
I want 3 chickens.
I have no3 basket for the eggs.
I have no3 basket which can hold 24 eggs.
Move the king to A3.
Can you move the king to a6?
В файле с примерами есть примечания, какие из них соответствуют:
I want to buy some food. % does not match
I want 3 chickens. % matches
I have no3 basket for the eggs. % does not match, because "3" is preceded by "o"
I have no3 basket which can hold 24 eggs. % matches, because contains "24"
Move the king to A3. % matches, words preceded by "A" are not ignored.
Can you move the king to a6? % matches, 6 is not 1-5
В результате все соответствующие строки будут размещены внизу:
I want to buy some food.
I have no3 basket for the eggs.
I want 3 chickens.
Move the king to A3.
Can you move the king to a6?
I have no3 basket which can hold 24 eggs.
Предпочтительно (хотя и не обязательно) решение сортирует строки, содержащие наибольшее количество совпадающих цифр до конца. Например. «У меня 10 кур и 12 летучих мышей». (4 цифры) появляется после «У меня 99 кур». (2 цифры).
Решения, использующие BASH, Perl, Python 2.7, Ruby, sed
, awk
или grep
, хороши.