使用Awk提取指定坐标块内CELL_PARAMETERS与ATOMIC_POSITIONS对应行
用Awk精准提取目标数据块
问题背景
我手头有一类数据文件,里面只有一个包含Begin final coordinates和End final coordinates的文本块,其余位置全是重复出现的、仅含CELL_PARAMETERS和ATOMIC_POSITIONS的块。目前已经能提取出这个唯一的完整块,但还需要完成两个更精准的提取需求:
- 提取
CELL_PARAMETERS行下方的3行数据; - 提取
ATOMIC_POSITIONS行下方的5行数据。
解决方法
之前尝试结合区间提取与跳行的方法时出现语法错误,最终通过以下Awk命令解决问题:
- 提取
CELL_PARAMETERS行下方的3行数据:awk '/Begin final coordinates/{n=NR+4;m=NR+8} (n<NR) && (NR<m)' file - 提取
ATOMIC_POSITIONS行下方的5行数据(注:原命令中m=NR+8存在逻辑错误,已修正为m=NR+14以匹配提取5行数据的需求):awk '/Begin final coordinates/{n=NR+9;m=NR+14} (n<NR) && (NR<=m)' file
内容的提问来源于stack exchange,提问作者lucian
相关产品推荐
相关产品推荐

