Я взял книгу в формате простого текстового файла от Project Gutenberg (около 0,5 МБ), которую я хочу объединить с самим собой n
, чтобы сгенерировать большой текстовый файл, с которым я могу сравнить некоторые алгоритмы. Есть ли команда Linux, которую я могу использовать для достижения этой цели? cat
Звучит идеально, но, кажется, не слишком хорошо работает с конкатенацией файла на себя, плюс напрямую не затрагивает n
временную часть вопроса.
linux
concatenation
Брайс Томас
источник
источник
Ответы:
Для меня это две части - во-первых - использовать cat для вывода текстового файла в стандартный вывод и использовать append для добавления его в другой файл - например, foo.txt >> bar.txt добавит foo.txt к bar.txt
затем запустить его n раз с
заменив в этой команде свой номер
должно работать, где n ваш номер
Если вы используете csh, есть команда «repeat».
повторяю связанные части ответа скопированы отсюда , и я протестировал его в системе Ubuntu 11.04 на оболочке bash по умолчанию.
источник
{1..12}
правильно будет запустить тело 12 раз.for i in {1..n};do cat foo.txt; done > bar.txt
Мне скучно, так что вот еще несколько способов, как объединить файл с самим собой, в основном с
head
помощью костыля. Простите меня, если я переобъясню себя, я просто люблю говорить вещи: PПредполагается,
N
что это число самоконкатенаций, которые вы хотите сделать, и имя вашего файлаfile
.Переменные:
Учитывая копия
file
называетсяfile2
,total_repeats
это число разfile
нужно будет добавить кfile2
сделать то же самое , как если быfile
был сцеплены для себяN
раз.Сказал, что МАТ здесь, более или менее: МАТ (сущность)
Это первый семестр по информатике, но прошло много времени с тех пор, как я сделал доказательство по индукции, поэтому я не могу с этим справиться ... (также этот класс рекурсии довольно хорошо известен,
2^Loops
так что это тоже есть ...)POSIX
Я использую несколько не-posix вещей, но они не являются необходимыми. Для моих целей:
О, я только использовал это. Ну что ж, раздел уже здесь ...
методы
head
с отслеживанием linecount.Нет временных файлов, нет кота, даже не слишком много математики, все радость.
tee
с математикойЗдесь
tee
происходит чтение,file
но постоянное добавление к нему, поэтому он будет продолжать чтение файла при повторении, пока неhead
остановит его. И мы знаем, когда остановить это из-за МАТ . Добавление идет за борт, поэтому я использовал временный файл. Вы также можете обрезать лишние строкиfile
.eval
Повелитель тьмы!Это просто расширяет
cat file file file ...
и убирает это. Вы можете сделать это и без$tmp
файла:Вторая
head
«хитрость»cat
- поместить посредника между операцией записи. Вы могли бы обманутьcat
и другого,cat
но это противоречиво. Попробуй это:sed
:Вынуждает
sed
читать весь файл как строку, захватывает все это, затем вставляет это$total_repeats
число раз.Конечно, это не удастся, если в вашем файле есть нулевые символы. Выберите тот, которого вы знаете, там нет.
Пока это все, ребята, надеюсь, этот произвольный ответ никого не смутил. Я проверял их все много раз, но я всего лишь два года пользуюсь оболочкой, так что имейте это в виду, я думаю. Сейчас спать ...
rm $tmp
источник
Вы, конечно, можете использовать
cat
для этого:Для того, чтобы получить
$n
копии, вы можете использоватьyes
Водопроводный вhead -n $n
:Соедини это дает
источник