【lammps】后处理 log.lammps
【lammps】后处理 log.lammps
直接运行命令查看输出(不重定向):
egrep '^[[:space:]]+(Step|Temp|Press|Pxx|Pyy|Pzz|Lx|Ly|Lz|Atoms|[0-9])' log.lammps
将上述内容重定向到新的文件中:
egrep '^[[:space:]]+(Step|Temp|Press|Pxx|Pyy|Pzz|Lx|Ly|Lz|Atoms|[0-9])' log.lammps > thermo_data.txt
提取完整表格
提取 标题行 + 所有数据行(排除其他无关内容),可以使用更精确的正则表达式:
# 匹配标题行(包含完整列名)
egrep '^[[:space:]]+Step[[:space:]]+Temp[[:space:]]+Press' log.lammps -A 100 > thermo_table.txt
-A 100:匹配标题行后,附带接下来的 100 行数据(根据实际数据量调整)。
解析:
egrep
等同于 grep -E
,使用扩展正则表达式(无需对 |、+ 等符号加反斜杠转义)。
正则表达式核心符号
^
:行首锚点(匹配行的开头)。
[[:space:]]
:匹配任意空白字符(空格、制表符 \t 等),等价于 [ \t\r\n\f]。
+
:前一个字符 / 组出现至少一次(即 [[:space:]]+ 表示一个或多个空白)。
(...)
:分组,用于将多个选项合并(如 (Step|Temp) 表示匹配 Step 或 Temp)。
|
:或运算符(多选一)。
[0-9]
:匹配任意数字(等价于 \d,但更通用)。
-A 100
:-A 是 --after-context 的缩写,表示匹配后显示后续 100 行。
两者之间的区别:
egrep '^[[:space:]]+(Step|Temp|Press|Pxx|Pyy|Pzz|Lx|Ly|Lz|Atoms|[0-9])' log.lammps
标题关键词或数字开头的行
egrep '^[[:space:]]+Step[[:space:]]+Temp[[:space:]]+Press' log.lammps -A 100 > thermo_table.txt
严格包含 Step Temp Press 的标题行