我正在对一个包含许多帧的非常大的文件进行后处理。偶尔会有一个空框。我想删除这些。例如,
文件.txt
TIMESTEP
101
NUMBER OF ATOMS
3
ATOMS x y z
O 1 2 3
H 2 1 3
C 1 1 2
TIMESTEP
102
NUMBER OF ATOMS
3
ATOMS x y z
TIMESTEP
103
NUMBER OF ATOMS
3
ATOMS x y z
O -1 2 3
H 1 2 3
C 0 1 1
...
我想获得
文件.txt
TIMESTEP
101
NUMBER OF ATOMS
3
ATOMS x y z
O 1 2 3
H 2 1 3
C 1 1 2
TIMESTEP
103
NUMBER OF ATOMS
3
ATOMS x y z
O -1 2 3
H 1 2 3
C 0 1 1
...
我试过了
sed '/3.*/{:a;N;N;N;N;/.*NUMBER OF ATOMS$/d;ba}' file.txt
但这也会删除有效的帧,这不是我想要的。任何指示和建议都非常感谢!
这可能对你有用(GNU sed):
sed -n '/TIMESTEP/!{H;$!d};x;s/\n/&/5p' file
收集保留空间中的帧(记录),并且仅打印 6 行或更多行长的帧。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句