拆分文件内容并添加后缀和前缀

拆分文件内容并添加后缀和前缀

我正在尝试做三件事。1
# 将文件分割成小块
2# 分割时我需要在每个分割文件的开头添加一些文本。3# 我需要在每个分割文件的结尾添加一些文本。

我有一个 2 GB 的文件,需要对其进行操作。这是我的文件样本的小块。请将此文件拆分为每 10 行。
需要对其执行操作的原始文件示例: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但它只能分割文件。

答案1

引用得正确有点棘手(我思考因为在后台split调用),但 GNU 的最新版本提供了一个命令,可以让你这样做 - 例如使用bash - c ' ... 'split--filtersed

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

答案2

虽然问题看起来非常清楚,但例子对我来说不是很清楚。因此,我将坚持问题的描述。

将文件分割成相等的块,添加前缀和后缀

下面的脚本将完全按照您描述的方式执行;它将:

  • 将文件分成相等的块(行数)
  • 添加前缀(作为第一行)
  • 添加后缀(如最后一行

此外:

  • 文件将被命名为:

    split_1, split_2, split_3
    

    ETC。

  • 所有文件都将在脚本的工作目录中创建

一个例子

一个文件,例如:

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

ETC

剧本

#!/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. 在脚本的头部,设置大文件的路径、前缀、后缀和块大小(要拆分的行数)

    # --- 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
    

解释

...会跟进,需要睡觉了:)

相关内容