在 Linux/bash 下拆分文件及其行

在 Linux/bash 下拆分文件及其行

Splitting a file and its lines under Linux/bash

我有一个相当大的文件(1.5 亿行 10 个字符)。我需要将它拆分为 200 万行的 150 个文件,每个输出行或者是源行的前 5 个字符或最后 5 个字符。
我可以在 Perl 中相当快地做到这一点,但我想知道是否有使用 bash 的简单解决方案。
有什么想法吗?


家庭作业? :-)

我认为带有 sed(将每行分成两行)和 split(将内容分成多个文件)的简单管道就足够了。

man 命令是你的朋友。

确认不是作业后补充:

怎么样

1
2
sed 's/\\(.....\\)\\(.....\\)/\\1\
\\2/'
input_file | split -l 2000000 - out-prefix-

?


n


每行变体的前五个字符,假设大文件名为x.txt,并假设可以在当前目录中创建名称为x.txt.*的文件:

拆分 -l 2000000 x.txt x.txt.out


我认为这样的事情可以工作:

1
2
3
4
5
6
7
8
9
10
11
out_file=1
out_pairs=0
cat $in_file | while read line; do
    if [ $out_pairs -gt 1000000 ]; then
        out_file=$(($out_file + 1))
        out_pairs=0
    fi
    echo"${line%?????}"  out${out_file}
    echo"${line#?????}"  out${out_file}
    out_pairs=$(($out_pairs + 1))
done

但不确定它是否比使用 Perl 更简单或更高效。


推荐阅读

    linux文件io命令?

    linux文件io命令?,系统,设备,时间,地址,平均,信息,服务,工具,报告,网络,嵌入

    改文件linux命令行?

    改文件linux命令行?,地址,系统,工作,信息,数字,文件,命令,设备,密码,权限,lin

    拷贝文件夹linux命令?

    拷贝文件夹linux命令?,系统,地址,服务,信息,密码,情况,单位,项目,命令,文件,l

    进入文件夹linux命令?

    进入文件夹linux命令?,系统,密码,终端,目录,标的,一致,传播,图片,环境,工作,l

    用linux命令输出id?

    用linux命令输出id?,系统,设备,工作,信息,地址,命令,工具,基础,目录,进程,lin

    打包文件命令linux?

    打包文件命令linux?,系统,时间,工具,名称,命令,文件,目录,格式,表示,详细信

    linux删除命令文件夹?

    linux删除命令文件夹?,系统,数据,通用,文件夹,命令,文件,环境,百度,不了,名

    linux文件io命令?

    linux文件io命令?,系统,设备,时间,地址,平均,信息,服务,工具,报告,网络,嵌入

    linux中文件编辑命令?

    linux中文件编辑命令?,系统,工作,工具,信息,地址,发行,命令,第一,检测,基础,l

    linux文件格式的命令?

    linux文件格式的命令?,设备,命令,系统,文件,标准,代码,情况,电脑,平台,数据,l

    linux命令行编译文件?

    linux命令行编译文件?,代码,系统,项目,工具,网上,手机,电脑,地址,官网,文件,L

    linux下文件写入命令?

    linux下文件写入命令?,系统,信息,文件,名字,电脑,软件,目录,命令,内容,指令,l

    linux命令替换字符串?

    linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结

    linux命令备份文件夹?

    linux命令备份文件夹?,设备,系统,文件,命令,备份,情况,做好,名字,灵活,数据,l

    linux命令中转义字符?

    linux命令中转义字符?,标准,本行,密码,字符,电脑,系统,环境,数据,命令,终端,l

    linux命令输出太多?

    linux命令输出太多?,命令,标准,信息,时间,名称,文件,内容,屏幕,模式,目录,lin

    linux命令deb文件?

    linux命令deb文件?,软件,位置,第一,系统,中心,工具,信息,发行,网站,管理系统

    linux文件夹删除命令?

    linux文件夹删除命令?,系统,命令,不了,档案,名称,通用,文件夹,文件,目录,指

    linux命令输出截图?

    linux命令输出截图?,工具,图片,代码,截图,环境,支柱,网络,标准,发展,命令,Lin

    linux命令行字符颜色?

    linux命令行字符颜色?,系统,地址,代码,信息,数字,软件,通用,电脑,颜色,命令,l