首字符替换的几种方式
在处理文件的过程中,有时会遇到首字符的替换,比如LAMMPS软件产生的XYZ格式文件,这里大致总结下替换首字符的几种方式。
第一列表示原子类型的数据是用数字代替的,如下所示。
9 Atoms 1 12.6942 12.6942 12.768 1 12.6901 12.6901 15.9599 1 12.7511 16.0122 12.6378 1 12.6942 15.882 15.9558 1 16.0122 12.7511 12.6378 1 15.882 12.6942 15.9558 1 15.9439 15.9439 12.7061 1 ↑ 16.0122 16.0122 15.8989 2 12.849 14.7479 13.9021
这样在可视化的时候就不能显示原子的颜色和成键,需要将第一列换成元素名称。这里要将1换成Fe,2换成He。
Windows平台
Windows平台下,替换字符比较简单。这里介绍两种方式:
1. 替换命令:Ctrl+H
使用编辑器打开以上文件,使用Ctrl+H快捷命令,输入“查找目标”和“替换为”,勾选“全词匹配”,替换即可。推荐编辑器:Ultraedit或Notepad++。
即便如此,有时也会将其他的1给替换掉,这显然不是我们想要的。那么就可以使用下面的方法。
2. 编辑器列操作
一些比较高级的编辑器提供列操作,可以同时对一整列数据进行操作,如Ultraedit或Notepad++。
若使用Notepad++,则打开后,将光标移至第10行的 ↑ 处,按住alt键,向左上方向拖拽,至将所有的1全选。这时即进入列模式,将1删掉,键入Fe。然后按正常的将2修改为He即可。
Linux平台
Linux平台下的替换都是通过命令实现的,所以相对来说要复杂点,但功能也更强大点。也有不少方法,这里介绍亮点:
1. vim的Visual Block模式
vim是一款功能强大的linux编辑器,提供的visual block模式类似前面提到的列编辑模式。
具体操作可以阅读:vim同时(取消)注释多行文本
2. sed命令
sed命令是功能强大的linux命令,可以完成很复杂的替换功能。这里进行首字符的替换只是其替换的一种规则。
同样针对前面的问题,sed替换命令如下:
sed 's/^1/Fe/g' test.xyz > out.xyz
这里的^1即是指以1开头的字符,Fe是要替换的,g表示全局替换,test.xyz表示要替换的文件,out.xyz为替换后文件。
当然,肯定还有其他的方法。但这里列出来的都是相对比较简单的。如果你还有更简单的,请与我分享,谢谢!