我有许多固定宽度数据的文本文件,例如:
数据包含3或4次模拟的运行,全部存储在同一个文本文件中,没有分隔符。换句话说,每个运行之间没有空行或其他任何内容,例如如果每个运行仅有3个记录,则对于3个运行,它将如下所示:
这是一个COMSOL Multiphysics输出文件,对于那些感兴趣的人来说。从视觉上可以看出新运行数据从哪里开始,因为第一个x值被重复了(实际上,所有第二行可能都是相同的)。所以我需要首先打开文件并获取这个x值,保存它,然后将其作为模式与awk或csplit匹配。我正在努力解决这个问题!
csplit将完成这项工作:
但我必须知道要分割的模式。这个问题很相似,但我的每个文本文件可能有不同的匹配模式:根据文件内容和模式匹配拆分文件。
Ben。
$ head model-q-060.txt
% x y
15.0 0.0
15.026087 -1.0
15.052174 -2.0
15.07826 -3.0
15.104348 -4.0
15.130435 -5.0
15.156522 -6.0
15.182609 -6.9999995
15.208695 -8.0
数据包含3或4次模拟的运行,全部存储在同一个文本文件中,没有分隔符。换句话说,每个运行之间没有空行或其他任何内容,例如如果每个运行仅有3个记录,则对于3个运行,它将如下所示:
$ head model-q-060.txt
% x y
15.0 0.0
15.026087 -1.0
15.052174 -2.0
15.0 0.0
15.038486 -1.0
15.066712 -2.0
15.0 0.0
15.041089 -1.0
15.087612 -2.0
这是一个COMSOL Multiphysics输出文件,对于那些感兴趣的人来说。从视觉上可以看出新运行数据从哪里开始,因为第一个x值被重复了(实际上,所有第二行可能都是相同的)。所以我需要首先打开文件并获取这个x值,保存它,然后将其作为模式与awk或csplit匹配。我正在努力解决这个问题!
csplit将完成这项工作:
$ csplit -z -f 'temp' -b '%02d.txt' model-q-060.txt /^15\.0\\s/ {*}
但我必须知道要分割的模式。这个问题很相似,但我的每个文本文件可能有不同的匹配模式:根据文件内容和模式匹配拆分文件。
Ben。