команда для присоединения к серии файлов вместе

Вставка копии является более старой, чем мышь. Первый редактор Unix, редактор, имел t управляйте для копирования набора строк к другому местоположению. В vi существуют различные команды, чтобы сократить, дергать и вставить текст. Для копирования текста между файлами Вы сохранили бы текст для копирования во временном файле и импорте что временный файл в целевом документе, например, с w и r в редакторе (:w и :r в vi). Для включения вывода команды в файле Вы перенаправили бы его вывод (mycommand >file или mycommand >>file) и импортируйте тот файл в свой документ; vi, представленный ! команда и друзья для прямой вставки вывода, не требуя временного файла.

Загрузка страницы справочника в Vim или Emacs и вставку копии от него является стандартной программой для пользователей Vim/Emacs. Веб-браузеры не существовали, пока Unix не был достаточно взрослым для питья, но тот же принцип применяется где угодно: буфер обмена является более старым, чем оконные среды. Что принесенные оконные среды было вставкой копии перекрестного приложения, которая могла быть, покончили только немного больше усилия через файлы.

3
23.05.2011, 03:01
4 ответа

В данном случае cat book??.html > book.html будет хорошо работать, если Вы не будете заботиться о надлежащем формате HTML.

Для более общего случая скажите, что у Вас были "book1.html" вместо "book01.html", "book2.html" вместо "book02.html" и т.д. Имена файлов не сортируют лексически то же как логически. Можно сделать что-то вроде этого:

(echo book?.html | sort; echo book??.html | sort) | xargs cat > book.html

Так в целом: script_generating_file_names_in_order | xargs cat > all_one_file

Та идиома может иметь большое значение.

2
27.01.2020, 21:17

Я покупаю комментарии о голове/хвосте и имею решение, отсортированное по числу без этого материал xargs/sort/echo.

cat book{01..12}.html book-all.html
2
27.01.2020, 21:17

При использовании вида GNU, можно использовать sort -V отсортировать имена в правильном порядке:

$ echo -e "book4\nbook2\nbook17\nbook12" | sort -V
book2
book4
book12
book17

Это работает на любое количество файлов:

ls book*.html | sort -V | xargs cat > allbooks.html
1
27.01.2020, 21:17

Простое решение будет, вероятно, работать, если Ваш браузер будет permissiv.

cat book[0-9]*.html > book.html

Уверенный Вы могли обойти материал разделения, чтобы быть, вероятно, немного более законными:

perl -e 'undef($/); for($x=0;$x<=$#ARGV;$x++) { open(X,"<",$ARGV[$x]); $_ = <X>; close(X); s/.*<body[^>]*>//s unless ($x == 0);  s|</body>|| unless ($x == $#ARGV); print;' book[0-9]*.html > book.html

Но это не гарантия, что у Вас действительно будет все, в чем Вы нуждаетесь или, если главы имеют различные стили или JavaScript или что бы то ни было.

0
27.01.2020, 21:17

Теги

Похожие вопросы