Вам нужно только установить java JDK и Leiningen
sudo apt-get install openjdk-7-jdk leiningen
Моя настройка такова:
:~ > java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
:~ > lein -v
Leiningen 1.7.1 on Java 1.7.0_65 OpenJDK 64-Bit Server VM
Если вы хотите использовать Clojure 1.6, используйте проект .clj, как это
(defproject MyAwesomeProject "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.6.0"]])
Cursive пока недоступен, поэтому вам нужно использовать что-то еще. Мой выбор IDE - против часовой стрелки. Он использует Leiningen для управления зависимостями, поэтому вам практически нечего делать.
Если вы хотите обновить зависимостей вручную, cd в каталог проекта и сделать
:~/Clojure/MyAwesomeProject > lein deps
Copying 18 files to /home/francois/Clojure/MyAwesomeProject/lib
, то вы можете легко переключиться.
Вот еще одна альтернатива, используя только встроенные настройки bash и cat:
{ read ; cat > headerless.txt; } < $file
$file перенаправляется в группу команд { }. [F8] просто считывает и отбрасывает первую строку. Остальная часть потока затем передается по каналу cat, который записывает его в файл назначения.
На моем Ubuntu 16.04 производительность этого и tail решения очень схожа. Я создал довольно большой тестовый файл с seq:
$ seq 100000000 > 100M.txt
$ ls -l 100M.txt
-rw-rw-r-- 1 ubuntu ubuntu 888888898 Dec 20 17:04 100M.txt
$
$ time tail -n +2 100M.txt > headerless.txt
real 0m1.469s
user 0m0.052s
sys 0m0.784s
$
$ time { read ; cat > headerless.txt; } < 100M.txt
real 0m1.877s
user 0m0.000s
sys 0m0.736s
$
У меня только сейчас есть Ubuntu VM, и я видел значительные изменения в таймингах обоих, хотя они все в одном и том же шаре.
Попытка в моей системе и префикс каждой команды с помощью time получили следующие результаты:
sed:
real 0m0.129s
user 0m0.012s
sys 0m0.000s
и tail:
[ f2], которые показывают, что на моей системе, по крайней мере, AMD FX 8250 с Ubuntu 16.04, хвост значительно быстрее. В тестовом файле было 10 000 строк размером 540 тыс. Файл был прочитан с жесткого диска.
Нет объективного способа сказать, что лучше, потому что sed и tail - это не единственные вещи, которые выполняются в системе во время выполнения программы. Множество факторов, таких как дисковый ввод / вывод, сетевой ввод-вывод, прерывания процессора для процессов с более высоким приоритетом - все это влияет на скорость вашей программы.
Оба они написаны на C, поэтому это не проблема языка, а более экологическая. Например, у меня SSD, и в моей системе это займет время в микросекундах, но для того же файла на жестком диске потребуется больше времени, потому что жесткие диски значительно медленнее. Таким образом, аппаратное обеспечение играет роль и в этом.
Есть несколько вещей, которые вы можете иметь в виду, рассматривая, какую команду выбрать:
Какова ваша цель? sed - редактор потоков для преобразования текста. tail предназначен для вывода определенных строк текста. Если вы хотите иметь дело с линиями и распечатывать их, используйте tail. Если вы хотите отредактировать текст, используйте sed. tail имеет гораздо более простой синтаксис, чем sed, поэтому используйте то, что вы можете прочитать сами и что могут прочитать другие.Другим важным фактором является объем данных, которые вы обрабатываете. Небольшие файлы не дают вам никакой разницы в производительности. Картина становится интересной, когда вы имеете дело с большими файлами. С 2 GB BIGFILE.txt мы видим, что sed имеет гораздо больше системных вызовов, чем tail, и работает значительно медленнее.
bash-4.3$ du -sh BIGFILE.txt
2.0G BIGFILE.txt
bash-4.3$ strace -c sed '1d' ./BIGFILE.txt > /dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
59.38 0.079781 0 517051 read
40.62 0.054570 0 517042 write
0.00 0.000000 0 10 1 open
0.00 0.000000 0 11 close
0.00 0.000000 0 10 fstat
0.00 0.000000 0 19 mmap
0.00 0.000000 0 12 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 2 rt_sigaction
0.00 0.000000 0 1 rt_sigprocmask
0.00 0.000000 0 1 1 ioctl
0.00 0.000000 0 7 7 access
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 getrlimit
0.00 0.000000 0 2 2 statfs
0.00 0.000000 0 1 arch_prctl
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00 0.134351 1034177 11 total
bash-4.3$ strace -c tail -n +2 ./BIGFILE.txt > /dev/null
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
62.30 0.148821 0 517042 write
37.70 0.090044 0 258525 read
0.00 0.000000 0 9 3 open
0.00 0.000000 0 8 close
0.00 0.000000 0 7 fstat
0.00 0.000000 0 10 mmap
0.00 0.000000 0 4 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 1 1 ioctl
0.00 0.000000 0 3 3 access
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.238865 775615 7 total
Другие ответы показывают, что лучше создать новый файл с отсутствием первой строки. Если вы хотите отредактировать файл, а не создавать новый файл, я уверен, что ed будет быстрее, потому что он не должен создавать новый файл вообще. Но вы должны искать, как удалить строку с ed, потому что я использовал ее только один раз.