ファイルの内容に応じて大きなテキストファイルをより小さなファイル部分に分割する

ファイルの内容に応じて大きなテキストファイルをより小さなファイル部分に分割する

次のファイルがあります。 (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
.
.

関連情報