Linux 大日志文件按时间查询与分割处理

按时间查看日志

日志文件有40G:

sed -n '/2020-05-02 15:00:/,/2020-05-02 15:05:/p' catalina.out > 20200502.log

大文件分割

split命令操作

[root@iZ2ze2pmuviyporobybycvZ ~]# split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is 'x'.  With no INPUT, or when INPUT
is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -a, --suffix-length=N   generate suffixes of length N (default 2)
      --additional-suffix=SUFFIX  append an additional SUFFIX to file names
  -b, --bytes=SIZE        put SIZE bytes per output file
  -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file
  -d, --numeric-suffixes[=FROM]  use numeric suffixes instead of alphabetic;
                                   FROM changes the start value (default 0)
  -e, --elide-empty-files  do not generate empty output files with '-n'
      --filter=COMMAND    write to shell COMMAND; file name is $FILE
  -l, --lines=NUMBER      put NUMBER lines per output file
  -n, --number=CHUNKS     generate CHUNKS output files; see explanation below
  -u, --unbuffered        immediately copy input to output with '-n r/...'
      --verbose           print a diagnostic just before each
                            output file is opened
      --help     display this help and exit
      --version  output version information and exit

SIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).

CHUNKS may be:
N       split into N files based on size of input
K/N     output Kth of N to stdout
l/N     split into N files without splitting lines
l/K/N   output Kth of N to stdout without splitting lines
r/N     like 'l' but use round robin distribution
r/K/N   likewise but only output Kth of N to stdout

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'split invocation'

按文件行数分割

catalina.out 按50000分割一个文件:

split -l 50000 -d --verbose catalina.out base-split-name

#输出
base-split-name00
base-split-name01
base-split-name02
......

按文件大小分割

除了按照行数切割之外,split还支持通过文件大小进行切割,通过指定-b参数指定文件大小进行切割,文件大小单位支持K, M, G, T, P, E, Z,如下以切割为500M演示文件切割过程。

split -b 500M -d --verbose catalina.out base-split-name

#输出
base-split-name00

......

参考文章:

Linux运维实战篇之大文件切割

CentOS7按时间段截取指定的Tomcat日志

### 回答1: Linux中的split命令可以按照行来分割文件。具体使用方法如下: 1. 打开终端,进入需要分割文件所在的目录。 2. 输入以下命令: split -l 行数 文件名 其中,行数为每个分割文件包含的行数,文件名为需要分割文件名。 例如,如果需要将文件test.txt按照每100行分割成多个文件,可以输入以下命令: split -l 100 test.txt 执行完毕后,会在当前目录下生成多个以xaa、xab、xac等命名的文件,每个文件包含100行数据。 ### 回答2: Linux中的split命令可以用于按行分割文件。该命令的语法为: ``` split [选项] 文件名 前缀 ``` 其中,选项可以是以下之一: - -l 行数:指定每个分割文件包含的行数。 - -n 文件数目:指定分割文件的数量。 - -a 数字:指定分割文件名后缀的长度。 文件名是要分割文件的名称,前缀则是每个分割文件的名称前缀。 例如,如果我们有一个文件名为example.txt,其中包含10行文本。我们可以使用以下命令将其分割成2个包含5行文本的文件: ``` split -l 5 example.txt output ``` 这将生成两个分割文件outputaa和outputab,分别包含example.txt文件的前5行和后5行。 如果我们想要将文件分割成3个文件,每个文件包含3行文本,可以使用以下命令: ``` split -l 3 -n 3 example.txt output ``` 这将生成三个分割文件outputaa、outputab和outputac,每个文件包含example.txt文件中的3行文本。 通过使用split命令,我们可以轻松地按行将文件分割成多个部分,从而方便地处理大型文件。 ### 回答3: Linux中的split命令可以按照行来分割文件。该命令可以将一个大文件分割成多个小文件,每个小文件包含指定的行数。使用split命令可以很方便地处理大型日志文件、文本文件等。 使用split命令按行分割文件的语法如下: split -l <行数> <文件名> <输出文件前缀> 其中,-l参数用来指定每个小文件包含的行数,<文件名>为要分割文件名,<输出文件前缀>是指分割后生成的小文件的名称前缀。 例如,假设有一个名为sample.txt的文件,内容如下: This is line 1. This is line 2. This is line 3. This is line 4. This is line 5. 要将该文件按照每行2行进行分割,可以使用以下命令: split -l 2 sample.txt output_ 执行该命令后,会生成两个小文件,分别命名为output_aa和output_ab。 output_aa的内容为: This is line 1. This is line 2. output_ab的内容为: This is line 3. This is line 4. 如果源文件的行数不能整除指定的行数,那么最后一个分割的小文件会包含剩余的行。 需要注意的是,split命令分割文件时,并不修改原始文件,而是生成新的小文件。如果需要删除原始文件中被分割掉的行,可以使用其他命令进行处理,如sed命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值