Ядро Linux автоматически управляется управлением кэшем. Все, что загружено в оперативную память, остается там, пока другой процесс не нуждается в RAM, и больше нет. Таким образом, в RAM RAM Linux всегда должна быть заполнена. У вас система 128 ГБ ОЗУ, это более чем достаточно для файла 100-1000 МБ.
Чтобы загрузить огромный файл в RAM только CAT
: Это:
cat huge_file > /dev/null 2>&1
Все вывод отправляется на / dev / null
, но для этого он должен передавать системы RAM. При этом вы можете наблюдать, как кэшируется
в / proc / meminfo
.
Когда CAT
заканчивается, выполняют приложение Ruby. Приложение Ruby теперь читает кэшированную версию огромного файла.
Я думаю, что вся операция может быть завершена с использованием SED 'S / ^ \ ([^ \ T] * \). * / \ 1, / '
...
Стриптиз этих трейлинговых пространств с помощью awk
самого себя
awk -F'\t' '{sub(/[[:blank:]]+$/, "", $1);print $1","}' file
Вы можете использовать printf
вместо использования Print
обойти эту проблему.
$ awk '{for (i=1;i<NF;i++)printf("%s ", $i);printf("\b%s\n",",")}' file.txt
Siouxsie Sioux Siouxsie Sioux,
Sylvia Tobias Sylvia Tobias,
Sydney Urshan Sydney Urshan,
Club Drummer (uncredited) Club Drummer (uncredited),
Или если вам это нужно с SED
$ sed -re 's/ +\.\.+/,/g' file.txt
Siouxsie Sioux Siouxsie Sioux,
Sylvia Tobias Sylvia Tobias,
Sydney Urshan Sydney Urshan,
Club Drummer (uncredited) Club Drummer (uncredited),