Grep 从大型csv文件中提取n行文本

Grep 从大型csv文件中提取n行文本,grep,unix,Grep,Unix,我有一个包含200000行的CSV文件(foo.CSV)。我需要把它分成四个文件(foo1.csv、foo2.csv…等等),每个文件有50000行 我已经尝试过使用gui文本编辑器简单地按ctrl-v/-c键,但是我的计算机的速度减慢到停止 我可以使用什么unix命令来完成此任务 sed -n 2000,4000p somefile.txt 将从2000到4000行打印到标准输出 将从2000到4000行打印到标准输出。我手边没有一个终端可以试用,但它应该只是 希望命名不是非常重要,因为使用

我有一个包含200000行的CSV文件(foo.CSV)。我需要把它分成四个文件(foo1.csv、foo2.csv…等等),每个文件有50000行

我已经尝试过使用gui文本编辑器简单地按ctrl-v/-c键,但是我的计算机的速度减慢到停止

我可以使用什么unix命令来完成此任务

sed -n 2000,4000p somefile.txt
将从2000到4000行打印到标准输出


将从2000到4000行打印到标准输出。

我手边没有一个终端可以试用,但它应该只是


希望命名不是非常重要,因为使用
-d
选项,输出文件将命名为
foo.csv00
<代码>foo.csv03。您可以添加
-a 1
选项,使后缀为0-3,但没有简单的方法将后缀插入文件名的中间。

我手边没有一个终端可以尝试,但它应该是


希望命名不是非常重要,因为使用
-d
选项,输出文件将命名为
foo.csv00
<代码>foo.csv03。您可以添加
-a 1
选项,使后缀为0-3,但没有简单的方法可以将后缀插入文件名的中间。

您应该使用

head -n 50000 myfile > part1.csv
head -n 100000 myfile | tail -n 50000 > part2.csv 
head -n 150000 myfile | tail -n 50000 > part3.csv 
等等


除此之外,在不控制文件名的情况下,您可以使用unix命令
split

您应该使用
head
tail

head -n 50000 myfile > part1.csv
head -n 100000 myfile | tail -n 50000 > part2.csv 
head -n 150000 myfile | tail -n 50000 > part3.csv 
等等


除此之外,您还可以使用unix命令
split

split-l50000 foo.csv

split-l50000 foo.csv

您可以使用您可以使用我为您编写了这个非常类似的shell脚本

这个shell脚本+awk对我来说很好:

#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
    if (NR >= initial_line && NR <= end_line) 
    print $0
}' $3
命令(它将从文件的第二行提取到第四行):

此命令的输出:

two
three
four

当然,您可以对其进行改进,例如,通过测试所有参数值是否都是预期值:-)

我为您的类似项目编写了这个小shell脚本

这个shell脚本+awk对我来说很好:

#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
    if (NR >= initial_line && NR <= end_line) 
    print $0
}' $3
命令(它将从文件的第二行提取到第四行):

此命令的输出:

two
three
four
当然,您可以改进它,例如通过测试所有参数值是否都是预期值:-)