У меня есть этот код в сценарии оболочки:
sort input | uniq -c | sort -nr > output
Во входном файле не было предшествующих пробелов, а в выходных. Как это исправить? Это в баш
command-line
uniq
Джереми Вик
источник
источник
perl -pe 's/ *(\d+) /$1\t/'
( здесь некоторые альтернативы ). Также труба в буфер обмена,xclip -selection c
чтобы вставить непосредственно в электронную таблицу.uniq -c
добавляет ведущие пробелы. НапримерВы можете добавить команду в конце конвейера, чтобы удалить ее. Например
источник
FWIW вы можете использовать другой инструмент сортировки для большей гибкости. Python является одним из таких инструментов.
Источник
Теоретически это будет даже быстрее, чем
sort
инструмент для больших входных данных, так как вышеприведенная программа использует хеш-таблицу для идентификации дублирующих строк вместо отсортированного списка. (Увы, он размещает строки с одинаковым количеством в произвольном, а не в естественном порядке; в него можно вносить поправки, и он все равно будет быстрее, чем дваsort
вызова.)Формат вывода
Если вы хотите больше гибкости формата вывода вы можете смотреть в
print()
иformat()
встроенных функциях.Например, если вы хотите вывести число в восьмеричной системе счисления с до 7 ведущими нулями, за которым следует символ табуляции вместо пробела с символом конца строки NUL, замените последнюю строку на:
использование
Сохраните сценарий в файле, скажем
sort_count.py
, и вызовите его с помощью Python:источник
Преобразуйте начальные пробелы в один пробел с помощью tr -s, а затем выведите выходные данные второго символа с помощью cut -c.
источник