У Doug McMahon есть пул PPA для Ubuntu Multimedia for Trusty здесь, где вы можете просмотреть доступные ему пакеты.
sudo apt-add-repository ppa:mc3man/trusty-media
и
sudo apt-get update
после этого делают [ ! d3]
sudo apt-get install ffmpeg gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-gnonlin gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly totem-plugins-extra gstreamer-tools ubuntu-restricted-extras libxine1-ffmpeg gxine mencoder mpeg2dec vorbis-tools id3v2 mpg321 mpg123 libflac++6 totem-mozilla icedax tagtool easytag id3tool lame nautilus-script-audio-convert libmad0 libjpeg-progs flac faac faad sox ffmpeg2theora libmpeg2-4 uudeview flac libmpeg3-1 mpeg3-utils mpegdemux liba52-0.7.4-dev libquicktime2
Поскольку вы упоминаете, что строки сортируются по алфавиту по первому столбцу: сценарий ниже будет читать строки, сохраняет их в буфере, пока строка начинается с ту же строку в столбце первой, что и предыдущая.
в алфавитном порядке сортируется по первому столбцу , буфер добавляется в выходной файл (только), если число строк соответствует определенное значение, буфер затем очищается, и процесс запускается снова, пока файл не будет выполнен.
Это должно быть довольно быстро на больших файлах, хотя я не запускал тест времени (пока) на огромном files
#!/usr/bin/env python3
import sys
#-- set the minimum number below
n = 5
# don't change anything below
f = sys.argv[1]; out = sys.argv[2]; mark1 = ""; lines = []
def write_out(lines):
if len(lines) >= n:
with open(out, "a+") as wrt:
for line in lines:
wrt.write(line)
with open(f) as read:
for l in read:
mark2 = l.split()[0]
if mark2 == mark1:
lines.append(l)
else:
write_out(lines)
lines = [l]
mark1 = mark2
# add the last set of lines
write_out(lines)
python3 /path/to/get_lines.py <input_file> <output_file>
Вывод (как ожидалось) в output_file, если мы установим предел в 5:
reverent:::ADJ 1.5 use:::V 2.78 25
reverent:::ADJ 1.5 sacred:::ADJ 1.77 25
reverent:::ADJ 1.5 music:::N 4.31 25
reverent:::ADJ 1.5 devout:::ADJ 2.46 25
reverent:::ADJ 1.5 devotion:::N 2.36 25