根据文件内容将大文本文件拆分为较小的文件部分

根据文件内容将大文本文件拆分为较小的文件部分

我有以下文件:(包含来自 dmesg 的信息)

more /tmp/file.txt

@@@@@@@@@@@@@@@@@@@@@@@@ worker01.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker02.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker03.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker04.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker05.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker06.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
@@@@@@@@@@@@@@@@@@@@@@@@ worker07.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.

我们想要创建文件

worker01.miss.com.txt
worker02.miss.com.txt
worker03.miss.com.txt
.
.
.

例如,当worker01.miss.com.txt文件时,将包含内容

@@@@@@@@@@@@@@@@@@@@@@@@ worker01.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.

例如何时worker02.miss.com.txt将包含内容

@@@@@@@@@@@@@@@@@@@@@@@@ worker02.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.

等等

答案1

使用awk

$ awk '/^@/ {close(dmesg_info); dmesg_info=$2".txt"} {print > dmesg_info}' input_file
$ cat worker01.miss.com.txt
@@@@@@@@@@@@@@@@@@@@@@@@ worker01.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.
$ cat worker02.miss.com.txt
@@@@@@@@@@@@@@@@@@@@@@@@ worker02.miss.com @@@@@@@@@@@@@@@@@@@@@@@@
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuset
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpu
[Fri Jan  8 06:29:09 2021] Initializing cgroup subsys cpuacct
.
.

相关内容