Разделение и добавляет суффикс и префикс для регистрации содержания

Я делаю попытку 3 вещей.
1# разделяет файл на маленькие блоки
2# при разделении я должен добавить некоторый текст к запуску каждого файла разделения. 3# я должен добавить некоторый текст в конец файла каждого файла разделения.

У меня есть файл 2 ГБ, на которых я должен выполнить операции. Вот маленький блок для образца файла, который я имею. Разделите этот файл согласно 10 строкам каждый.
Пример необработанного файла, на котором операция должна быть done:https://drive.google.com/file/d/0BzQ6rtO2VN95c0YzclhySVZYNDQ/view? usp=sharing
Я хочу сделать каждый файл разделения как php файл. Вот пример php файла: https://drive.google.com/file/d/0BzQ6rtO2VN95ZjU1WXpjTElCaEE/view? usp=sharing
Мне просто нужно недавно файлы разделения, чтобы быть файлом PHP, и они должны быть похожими на это:

<?php
$urls = array("tvproduction.agency
","http://tween.agency","http://twelve.agency","http://twenty1.agency
","http://twenty47.agency
","http://twentynine.agency
","http://twentyone.agency
","http://twentysenses.agency
","http://twentysix.agency
","http://twentyten.agency");
?>

Я попробовал split но это только разделило файл.

3
задан 4 January 2017 в 21:12

2 ответа

Хотя вопрос кажется полностью ясным, пример (примеры) не полностью ясны мне. Я буду поэтому придерживаться описания вопроса.

Разделение файла в равные блоки, добавление префикса и суффикса

Сценарий ниже сделает в значительной степени точно, как Вы описываете; это будет:

  • разделите файл на равные блоки (количество строк)
  • добавьте префикс (как первая строка)
  • добавьте суффикс (как последняя строка

Кроме того:

  • файлы назовут:

    split_1, split_2, split_3
    

    и т.д.

  • Все файлы будут созданы в рабочем каталоге сценария

Пример

Файл, как:

aap
noot
mies
wim
zus
jet
teun
vuur
gijs
aardappel
pinda
aap
noot
mies
wim
...

будет разделен, как:

something_before
aap
noot
mies
wim
zus
jet
teun
vuur
gijs
aardappel
something_after

и т.д.

Сценарий

#!/usr/bin/env python3

# --- set the file, the prefix , suffix and chunksize below
f = "/home/jacob/Bureaublad/test"
prefix = "something_before"
suffix = "something_after"
chunksize = 10

# --- don't change anything below
n = 1
nfile = 1

with open(f) as read:
    for l in read:
        if (n-1) % chunksize == 0:
            s = prefix+"\n"; a = ""
        elif n%chunksize == 0:
            a = suffix; s = ""
        else:
            a = ""; s = ""
        open("split_"+str(nfile), "a+").write(s+l+a)
        if n%chunksize == 0:
            nfile += 1    
        n += 1
# add the suffix to the last file if it is "incomplete"
last = suffix if a == "" else ""
open("split_"+str(nfile), "a+").write(last)

Как использовать

  1. Скопируйте сценарий в пустой файл, сохраните его как split_chunks.py
  2. В главном разделе сценария, установленного путь в Ваш большой файл, префикс, суффикс и chunksize (количество строк для разделения на)

    # --- set the file, the prefix , suffix and chunksize below
    f = "/home/jacob/Bureaublad/test"
    prefix = "something_before"
    suffix = "something_after"
    chunksize = 10
    
  3. Запустите скрипт с командой:

    python3 /path/to/split_chunks.py
    

Объяснение

... будет следовать, должен спать :)

3
ответ дан 1 December 2019 в 15:22

Немного сложно получить правильное цитирование (я думаю , потому что split вызывает bash - c ' ... ' под капотом), но последние версии GNU split предоставляют команду --filter, которая должна позволяют вам сделать это - например, используя sed

split -l 10 --filter='sed -e '\''1i\header text'\'' -e '\''$a\footer text'\'' > $FILE' file

или (еще проще), с printf

split -l 10 --filter='{ printf "header text\n"; cat - ; printf "footer text\n"; } > $FILE' file

Для иллюстрации, приведенные file генерируется как

printf '%03d\n' {1..100} > file

т.е. строки, состоящие из чисел от 001 до 100, затем

split -l 10 --filter='{ 
  printf "header line 1\nheader line 2\n"
  cat - 
  printf "footer line 1\nfooter line 2\n"
  } > $FILE' file

, дающие выходные файлы

$ ls xa?
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj

с, например,

$ cat xad
header line 1
header line 2
031
032
033
034
035
036
037
038
039
040
footer line 1
footer line 2
3
ответ дан 1 December 2019 в 15:22

Другие вопросы по тегам:

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