「轻松实现」Linux文件按行数分割(linux按数据行数分割)

轻松实现Linux文件按行数分割

Linux作为一款优秀的操作系统,其强大的命令行工具使得一个普通的文本文件可以快速处理、转换和分割。在现今的大数据时代,文件大小已经可以达到几个G甚至更多,拥有一个自动分割文件的工具可以让我们的工作变得更加高效和便利。下面我们将介绍如何在Linux系统上使用命令行工具来实现文件按行数分割。

我们需要明确分割文件的目的。一般来说,我们希望把一个超大文件分割成若干个小文件,每个小文件的行数固定。比如我们有一个大小为1GB的log文件,我们希望把它分割成1000个小文件,每个小文件的行数为1000行。或者我们希望把一个超大的CSV文件按行数分割成若干个小的CSV文件,以便我们可以在其他工具中使用这些小文件而不是加载整个原始文件。

假设我们有一个日志文件`log.txt`,行数为10万行,我们希望把它分割成100个小文件,每个小文件的行数为1000行。 那么我们可以使用以下的方法来达到目的。

我们需要计算出每个小文件所包含的行数,这个数值可以利用数学算式计算得出:总行数 ÷ 小文件数量 = 每个小文件的行数,即 10^5 ÷ 100 = 1000,每个小文件的行数为1000行。

我们需要使用`split`命令来实现文件的分割。`split`命令可以通过指定要分割的文件名和每个小文件的前缀、后缀名称和大小来实现文件分割。我们可以使用以下的命令来生成100个小文件:

“`shell

$ split –lines=1000 –numeric-suffixes=1 –additional-suffix=’.txt’ log.txt log_part_

“`

其中,`–lines`参数用于指定每个小文件所包含的行数,`–numeric-suffixes=1`参数用于指定每个小文件名称的数字序号从1开始递增,`–additional-suffix=’.txt’`参数用于指定每个小文件的后缀名为`.txt`,`log.txt`是原始的需要分割的文件名,`log_part_`是每个小文件的前缀名。

执行完以上命令之后,就会在当前目录下生成100个名为`log_part_1.txt`至`log_part_100.txt`的小文件,每个小文件包含1000行日志数据。

如果我们希望在每个小文件的开头添加一个可能有用的注释信息,比如文件名和分割的时间等等,可以使用以下的命令来实现:

“`shell

$ split –lines=1000 –numeric-suffixes=1 –additional-suffix=’.txt’ –filter=’echo “File Name: log_part_”$FILE_NUMBER_” Created at: $(date)” > $FILE’ log.txt

“`

其中,`–filter`参数用于指定一个shell命令来处理每个小文件。在这里,我们使用了`echo`命令来生成一个包含文件名和创建时间的注释信息,并将其重定向到每个小文件中去。`$FILE_NUMBER`变量用于指代当前小文件的序号,`$(date)`命令用于获取当前时间。执行完以上命令之后,每个小文件的开头都会添加上一个形如“File Name: log_part_1 Created at: Mon Jun 7 21:59:46 CST 2023”的注释信息。

通过这种方法,我们可以很轻松地将一个大文件分割成若干个小文件,以满足我们的使用需求。当然,这种方法并不是万能的,也有其一些限制,比如每个小文件的行数需要提前计算好,并且每个小文件的大小也需要事先确定。但在大多数情况下,这种方法已经足够方便和实用了。

相关问题拓展阅读:

  • Linux环境下,怎么拆分一个30多万条数据的文件,每个文件10万条数据,并且之一条是文件笔数
  • 求linux基本命令

Linux环境下,怎么拆分一个30多万条数据的文件,每个文件10万条数据,并且之一条是文件笔数

文件笔裂桐数是怎么定义的凳竖

每10w行取出:肆粗坦

cat a|head -n

cat a|head -n|tail -n

cat a|tail -n

求linux基本命令

看看鸟哥的私房菜吧,学linux必看书

常用系统服务

============

acpi-support 高级电源管理支持

acpid acpi守护程序.这两个用于电源管理,非常重要

alsa 声音子系统

alsa-utils

anacron cron的子系统,将系统关闭期间的计划任务,在下一次系统运行时执行。

apmd acpi的扩展

atd 类似于cron的任务调度系统。建议关闭

binfmt-support 核心支持其他二进制的文件格式。建议开启

bluez-utiles 蓝牙设备支持

bootlogd 启动日志。开启它

cron 任务调度系统,建议开启

cupsys 打印机子系统。

dbus 消息总线系统(message bus system)。非常重要

dns-clean 使用拨号连接时,清除dns信息。

evms 企业卷管理系统(Enterprise Volumn Management system)

fetchmail 邮件用户代理,用于收取邮件

gdm gnome登录和桌面管理器。

gdomap

gpm 终端中的鼠标支持。

halt 别动它。

hdparm 调整硬盘的脚本,配置文件为“/etc/hdparm.conf”。

hibernate 系统休眠

hotkey-setup 笔记本功能键支持。支持类型包括: HP, Acer, ASUS, Sony, Dell,和IBM。

hotplug and hotplug-net 即插即用支持,比较复杂,建议不要动它。

hplip HP打印机和图形子系统

ifrename 网络接口重命名脚本。如果您有十块网卡,您应该开启它

inetd在文件“/etc/inetd.conf”中,注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。

klogd 重要。

linux-restricted-modules-common受限模块支持。“/lib/linux-restricted-modules/”文件夹中的模块为受限模块。例如某些驱动程序,如果您没有使用受限模块,就不需要开启它。

lvm 逻辑卷管理系统支持。

makedev 创建设备文件,非常重要。

mdamd 磁盘阵列

module-init-tools 从/做模etc/modules加载扩展模块,建议开启。

networking 网络支持。按“/etc/network/interfaces”文件预设激活网络,非常重要。

ntpdate 时间同步服务,建议关闭。

pcmcia pcmcia设备支持。

powernowd 移动CPU节能支持

ppp and ppp-dns 拨号连接

readahead 预加载库文件。

reboot 别动它。

resolvconf 自动配置DNS

rmnologin 清除nologin

rsync rsync守护程序

sendsigs 在重启和关机期间发送信号

single 激活单用户模式

ssh ssh守护程序。建议开启

stop-bootlogd 在2,3,4,5运行级别中停止bootlogd服务

sudo 检查sudo状态。重要

sysklogd 系统日志

udev & udev-mab 用户空间dev文件系统(userspace devfilesystem)。重要

umountfs 卸载文件祥族系统

urandom 随机数生成器

usplash 开机画面支持

vbesave 显卡BIOS配置工具。保存显卡的状态

xorg-common 设置X服务ICE socket。

adjtimex 调整核心时钟的工具

dirmngr 证书列表管理工具,和gnupg一起工作。

hwtools irqs优化工具

libpam-devperm 系统崩溃之后,用于修理设备文件许可的守护程序。

lm-sensors 板载传感器支持

mdadm-raid 磁盘陈列管理器

screen-cleanup 清除开机屏幕的脚本

xinetd 管理其他守护进程的一个inetd超级守护程序

系统管理

========

一些细节

Linux是大小写敏感的系统,所有的命令、路径、参数、变量……都区分大小写

您可以使谨胡弊用TAB键补全您的命令,无论任何时候,多按几次TAB总会有所帮助

Shell的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它

命令由命令名、分隔符、参数、操作对象构成

命令名标识命令的功能,例如cp(copy)、mv(move)、rm(remove)……

有些命令包含一些子命令,您可以认为它的命令名由两个单词构成,例如“apt”软件包管理系统:

apt-get install 安装一个软件

apt-get remove 删除一个软件

分隔符为空格,多个连续的空格视为一个空格,下面两个命令相同:

cp a b

cp a b

有一些特殊符号也属于分隔符,例如管道(“|”)、重定向(“>”、“>>”、“”表示必需项,实际输入为尖括号中的内容

使用“|”表示“或”,以“|”分隔的项目不能同时使用,例如

tar

参数通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们

系统信息

uptime

联机信息-时间,显示如下

11:27pm up 9 days, 7:12, 3 user, load average: 0.07, 0.12,0.14

当前系统时间 系统运行时间 当前在线用户数 系统负荷 1分钟前 5分钟前 15分钟前

w

联机信息-已登录用户,显示如下

01:04:10 up 1:34, 2 users, load average: 0.25, 0.16, 0.11

uptime 信息

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

user tty1 192.168.0.1 23:30 1:33 0.14s 0.12s -bash

用户名 登录方式 来源地址 登录时间 发呆时间 资源占用 当前任务

Tips:w : 显示某一用户相关信息

who

联机信息,常用参数

-r 运行级别

whoami

显示当前用户名

last

最近用户登录信息

– 使用数字作为参数,控制显示条目。例如

last -10 显示10条纪录

uname

系统信息

-s 内核名称(默认参数)

-a 全部

-p CPU信息

-n 主机名

-r 内核发行信息(版本号)

-v 内核版本信息

date

显示、设定系统时间

-u 显示格林尼洛时间(UTC)

MMDDhhmmYY> 设定时间,需要管理员权限。例如: date

MM 月份 DD 天数 hh 小时 mm 分钟 CC 年份前两位 YY 年份后两位 ss 秒钟

秒钟、年份为可选,例如: date.59

+设定显示格式,以下为date默认输出格式:

date +%Y年\ %m月\ %d日\ %A\ %H:%M:%S\ %Z

格式控制

%n 换行

%t 制表符

小时

%H(00~23) %I(01~12) %k(0~23) %l(1~12) %p(AM|PM)

分、秒

%M分钟(00~59)

%S秒(00..61)

%T(hh:mm:ss) %r(hh:mm:ss )

%s 从1970年1月1日00:00:00 UTC到目前为止的秒数

%X(%H:%M:%S)

%Z时区

星期

%a(Sun~Sat) %A(Sunday~Saturday) %w : 一周中的第几天 (0..6)

年份

%Y(0000~9999) %y(00~99)

月份

%m(01~12) %b %h(Jan~Dec) %B(January~December)

日期

%d(01~31) %j(001~366)

%x(本地格式mm/dd/yy) %D(mm/dd/yy) %c

一年中的第几周

%U(00~53)以Sunday为一周的之一天 %W(00~53)以Monday为一周的之一天

cal

显示日历

文件管理

链接

为当前文件建立在其它路径中的访问方法。例如将系统中其它位置的可执行文件,链接到“/usr/local/bin”目录下,使用命令调用。

ls

显示当前目录文件列表

–color 不同属性以不同颜色显示(默认参数)

-a 全部显示

-i 显示inode值

-l 详细信息

-F 显示文件类型后缀 目录/ 链接@ 可执行文件* 端口文件= 管道文件| >

-A 显示隐藏文件

-R 递归显示子目录文件列表

-S 按文件大小排序

-t 按修改时间排序

-u 按访问时间排序

-d 只显示目录,不递归显示目录下的文件

cd |

切换目录

目录路径可以使用绝对路径或者相对路径

特殊路径:

~ $HOME目录(默认值)

– 上一次目录

.. 上一级目录

. 当前目录

Tips:您可以通过修改“/etc/environment”文件,来定义$CDPATH变量,设定“cd”命令的搜索路径。

pwd

显示当前路径

file

显示文件类型

-i 显示mime类型

du

计算文件或目录空间占用

-h 人性化显示。自动以G、M、K为单位显示占用空间大小

-l 重复计算硬链接文件大小

-L 计算符号链接文件大小

-a 显示当前目录子目录中的文件

-c 显示文件数

less

浏览文件,使用VI和Emacs两种风格的键绑定。以下为VI风格键绑定

Ctrl+f(orward) 向下翻一页 Ctrl+d(own) 向下翻半页

Ctrl+b(ackward) 向上翻一页 Ctrl+u(p) 向上翻半页

/ 查找 q(uit) 退出

touch

创建一个空文件

cp

将源文件复制为目录文件,或者将源文件复制到目标目录。多个源文件使用空格分隔

cp

将源目录复制到目标目录中,如果复制多个源目录,需要使用“-R”参数

-a 相当于-dpr参数

-d 保留链接

-f 强制复制,覆盖目标文件

-i 覆盖时询问用户

-p 保留修改时间和访问权限

-r -R 递归复制(目录=>目录)

-l 创建链接

-v 显示过程

rm

-r -R 递归删除

-f 强制删除(无需确认,直接删除。慎用!)

-i 交互式删除(询问用户)

rmdir

删除目录时,建议您使用“rm -r”命令

mv

相当于cp后删除源文件,也可以作为“重命名”使用。

mv

-r -R 递归

ln

-s 符号链接

-f 强制链接,覆盖目标文件

-i 覆盖前询问用户

文件操作

nano

一个简单轻便的文本编辑器,使用Emacs风格的键绑定。

split

将源文件按一定规则分割成若干个目标文件。默认文件名前缀为“x”

– 按行数分割文件

-l 同上

-b 按大小分割文件。可以使用b、k、m作单位,不指定单位的情况下,默认单位为b

-C 按大小分割文件,并尽量保持每行的完整

示例:

split -C 100k file.split x

cat

输出文件内容。用空格分隔多个文件名,可以将多个文件内容连接到一起输出。使用重定向合并为一个文件

-n 在输出中添加行号

-b 在输出中添加行号,空行不编号

-s 将两行或以上的空行,合并为一个空行

示例:

cat xaa xab xac > file.split

sort

对文本内容排序

-m 合并文件

-c 检查文件是否已按规则排序

-b 忽略行首空格字符

-u 忽略内容重复行

-f 忽略大小写

-l 忽略非打印字符

-M 作为月份比较

-d 按字典顺序排序,按照字母、数字、空格、制表符排序

-r 逆序输出

more

查看文件内容,我们建议您使用“less”

diff

比较文件

cksum

计算文件的CRC值。不指定文件名则从标准输入设备读入数据,例如:

echo xxx | cksum

md5sum

计算文件的md5值。同上

权限管理

一个文件主要包含下列属性,“ls -l”

– rwx rwx rwx user group date filename

其中,之一组为归属用户的权限,第二组为归属群组的权限,第三组为其它用户群组的权限。user为文件的归属用户,group为文件的归属群组,date为日期信息,filename为文件名。

可以使用3位的二进制数字来描述一组权限,某一权限对应的数字为1,则表示具有该种权限,为0,则不具有该种权限。

对于文件夹,必须拥有它的可执行权限,才能够使用“cd”命令进入该文件夹;拥有可读权限,才能够使用“ls”命令查看该文件夹的文件列表。

root用户拥有更高权限。

使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此我们将三组权限使用3位8进制数字来表示。它们的对应关系为:

r 100 4

w 010 2

x 001 1

将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:

7=4+2+1=rwx

5=4+1=rx

755=4+2+1 4+1 4+1=rwx r-x r-x

我们还可以使用“a、u、g、o”表示归属关系,使用“=、+、-”表示权限变化,使用“r、w、x”表示权限内容,

a 所有用户 u 归属用户 g 归属群组 o 其它用户

= 具有权限 + 增加权限 – 去除权限

r 可读权限 w 可写权限 x 可执行权限

例如:

a+x 给所有用户增加可执行权限

go-wx 将归属群组和其它用户的可写、可执行权限去掉

u=rwx 归属用户具有可读、可写、可执行权限

chmod

改变文件的权限。权限的表达式可以使用三位8进制数字表示,或者使用+-=来表示

-R 递归

-v 显示过程

-c 类似“-v”,仅显示更改部分

–reference=以指定文件为参考改变权限

示例:

chmod -R a+x path

chmod -Rv 755 path

chown

改变文件的归属用户。可以使用用户名或者UID

-R 递归

-v 显示过程

-c 类似“-v”,仅显示更改部分

–reference=以指定文件为参考改变权限

示例:

chown user:admin path

chown -R user.admin path

chown user path

chgrp

改变文件的归属群组。可以使用群组名或者GID

参数同上

SUID、SGID、Sticky bit

某些情况下,需要以可执行文件归属用户的身份执行该文件,可以为该文件设置SUID。同样,设置SGID能够以该文件归属群组的身份执行它。

例如:用户自行设定密码。

出于安全方面的考虑,“/etc/shadow”只能由root用户直接修改。

-rwroot root /etc/shadow

这个时候,可以为程序“/usr/bin/passwd”设置SUID,当普通用户执行“passwd”命令时,便能够以该程序归属用户root的身份修改“/etc/shadow”文件。而“passwd”程序自身带有身份验证机制,不能通过验证时拒绝执行,从而保证了安全。

ls -l /usr/bin/passwd

-r-s–x–x root root /usr/bin/passwd

我们发现,归属用户的可执行权限位使用“s”,表示SUID。同样,归属群组的可执行权限位使用“s”,表示SGID。

任何用户或群组都拥有“其它用户”的权限,所以不需要以“其它用户”身份执行文件,其它用户的可执行权限位便不会出现“s”。该权限位可能出现的属性为“t”,也就是粘着位Stickybit。

ls -ld /tmp

drwxrwxrwt root root /tmp

粘着位表示任何用户都可能具有写权限,但只有该归属用户或root用户才能够删除

SUID、SGID、Sticky bit也可以像权限一样,使用一个八位数表示,如下:

4 SUID

2 SGID

1 Sticky bit

通过在“chmod”命令中使用四个八位数的表达式,如“4755”,用之一位表示SUID、SGID、或Stickybit,便能够为文件设置这些特殊权限。

示例:

chmod -R 4755 path

lsattr

查看文件的特殊属性

-a 全部显示

-d 只显示目录

-R 递归

特殊属性包括:

a:仅供附加用途

b:不更新最后存取时间

c:压缩后存放

d:排除在倾倒操作之外

i:不得任意更动文件或目录

s:保密性删除文件或目录

S:即时更新文件或目录

u:预防以外删除

chattr

-R 递归

-V 显示过程

我加你Q给你发

香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

网站栏目:「轻松实现」Linux文件按行数分割(linux按数据行数分割)
当前链接:http://www.shufengxianlan.com/qtweb/news10/360360.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联