使用 sed 按序列拆分文件。 bash
Using sed to split a file by a sequence. bash
我想将一个 211,548,559 行的文件剪切成 10 个较小的文件。因此,例如,第一个文件将包含第 1 到 21154856 行
我想编写一个带有 seq 的 for 循环,使我能够自动化该过程。
我尝试先创建一个函数,然后使用 seq 创建一个循环。
run_sed(){
sed -n p Bar08_depth_chr1.txt > Bar8_d_c1_.txt
}
for pos in seq 1 10 211548559
do
run_sed $pos
done
此脚本无效。我相信是因为 sed -n 1$p
中的 $1 但我不知道如何解决它
对于 GNU split
:
split -nl/10 --additional-suffix=.txt -d Bar08_depth_chr1.txt Bar8_d_c1_
这将创建 10 个名为 Bar8_d_c1_00.txt
到 Bar8_d_c1_09.txt
的文件,这些文件可能不需要重命名。
对于 split
在 MacOS 下:
split -l $(( (211548559 - 9) / 10 )) Bar08_depth_chr1.txt Bar8_d_c1_
这将创建 10 个名为 Bar8_d_c1_aa
到 Bar8_d_c1_aj
的文件,可以 renamed 为您需要的名称模式。
显示的计算导致每个文件的行数四舍五入以避免第 11 个文件非常小。
我想将一个 211,548,559 行的文件剪切成 10 个较小的文件。因此,例如,第一个文件将包含第 1 到 21154856 行
我想编写一个带有 seq 的 for 循环,使我能够自动化该过程。
我尝试先创建一个函数,然后使用 seq 创建一个循环。
run_sed(){
sed -n p Bar08_depth_chr1.txt > Bar8_d_c1_.txt
}
for pos in seq 1 10 211548559
do
run_sed $pos
done
此脚本无效。我相信是因为 sed -n 1$p
中的 $1 但我不知道如何解决它
对于 GNU split
:
split -nl/10 --additional-suffix=.txt -d Bar08_depth_chr1.txt Bar8_d_c1_
这将创建 10 个名为 Bar8_d_c1_00.txt
到 Bar8_d_c1_09.txt
的文件,这些文件可能不需要重命名。
对于 split
在 MacOS 下:
split -l $(( (211548559 - 9) / 10 )) Bar08_depth_chr1.txt Bar8_d_c1_
这将创建 10 个名为 Bar8_d_c1_aa
到 Bar8_d_c1_aj
的文件,可以 renamed 为您需要的名称模式。
显示的计算导致每个文件的行数四舍五入以避免第 11 个文件非常小。