我正在尝试做三件事。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
--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
答案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)
如何使用
- 将脚本复制到一个空文件中,另存为
split_chunks.py
在脚本的头部,设置大文件的路径、前缀、后缀和块大小(要拆分的行数)
# --- set the file, the prefix , suffix and chunksize below f = "/home/jacob/Bureaublad/test" prefix = "something_before" suffix = "something_after" chunksize = 10
使用以下命令运行脚本:
python3 /path/to/split_chunks.py
解释
...会跟进,需要睡觉了:)