我有一个包含 20k 行的 log.txt 文件。每条线都有数字和 xyz 平面坐标,它们由组分隔。集合可以通过 log.txt 中的 ABC_1、ABC_2 等名称来识别
我想从这个 log.txt 文件中将所有集数据分离到单独的文本文件中,该文件应包含集中的所有数据(例如 ABC_1)。
我的 log.txt 如下所示。
ABC_1:
1, (xyz coordinates)
2, (xyz coordinates)
3, (xyz coordinates)
.... Continue
ABC_2:
101, (xyz coordinates)
102, (xyz coordinates)
103, (xyz coordinates)
.... Continue
ABC_3:
201, (xyz coordinates)
202, (xyz coordinates)
203, (xyz coordinates)
.... Continue
ABC_99:
9991, (xyz coordinates)
9992, (xyz coordinates)
9993, (xyz coordinates)
.... Continue
我想创建一个脚本,它可以从单个 log.txt 文件中为我提供 99 个单独的文本文件,并且应将其命名为 set name ABC_1.TXT
, ABC_2.TXT
... to ABC_99.TXT
from log.txt 。
答案1
与 csplit
csplit -s -b %d.txt -f ABC_ Log.txt /ABC_/ {*}
答案2
Awk
解决方案:
awk '/^ABC_/{
if (fn) close(fn); sub(":", "", $1);
fn = $1".txt"; next
}
{ print > fn }' Log.txt