用awk给文件分片

说明

用awk给文件分片

文件例子

[root@k8svm1 awktest]# cat exfile
one line
---
two line
---
three line

以上面的文件为例,要通过---符号来给这个单个文件分片成三个文件

awk RS(记录分隔符)

用法是用到awk 的RS,这个RS指的是awk的记录分隔符,默认是换行符,这次我们换成自己想要的记录分隔符,然后把每个记录重定向到其他文件。
命令

awk 'BEGIN{RS="---"}
     {print $0 > NR"file"}
     {close(NR"file")}' \
     exfile

处理的过程

[root@k8svm1 awktest]# awk 'BEGIN{RS="---"}
>      {print $0 > NR"file"}
>      {close(NR"file")}' \
>      exfile
[root@k8svm1 awktest]# ll
total 16
-rw-r--r-- 1 root root 10 Apr  5 20:32 1file
-rw-r--r-- 1 root root 11 Apr  5 20:32 2file
-rw-r--r-- 1 root root 13 Apr  5 20:32 3file
-rw-r--r-- 1 root root 37 Apr  5 20:26 exfile
[root@k8svm1 awktest]# for i in `ls [0-9]file`;do echo name is $i;cat $i;done
name is 1file
one line

name is 2file

two line

name is 3file

three line

你可能感兴趣的:(用awk给文件分片)