5. Linux(Ubuntu)命令处理ReaxFF物种信息(species.out文件)

 来源: “码农不会写诗”公众号

链接:Linux(Ubuntu)命令处理ReaxFF物种信息

书回正文

强大的Linux命令能够有效提升工作效率,今天让我们来感受下Linux在利用Lamms进行ReaxFF模拟时都能带来那些便利。


1 Linux命令介绍

在正式开始之前再介绍几个会用到的命令和知识点

01 ln (创建软链接)

软链接类似于windows中的快捷方式

ln -s work/test.txt test.txt  # 为./work/test.txt创建软链接为test.txt
ls -l test.txt   

lrwxrwxrwx 1 reaxff reaxff 13 Apr 14 22:09 test.txt -> work/test.txt

02  | (管道符)

将左边命令的结果,作为右边命令的输入

如下,cat查看/etc/services文件的内容,然后管道符|将输出结果送给grep作为其输入,然后grep从中过滤出包含echo字符的内容。

cat /etc/services | grep echo  # 此例等价于grep echo /etc/services

echo            7/tcp

echo            7/udp

echo            4/ddp                   # AppleTalk Echo Protocol

03 /mnt (WSL下挂载window文件)

WSL将Windows下的资源挂载在/mnt路径下,因此为了访问Windows下的文件,可通过cd命令直接去/mnt/目录下操作。

ls /mnt/  # 查看都有那些盘挂载

c  d  e  f  g

但为了在WSL中更直接更方便也更安全的处理Windows下的文件,可以利用上文讲到的ln命令,只将需要用到的文件链接到WSL方便操作的目录下即可。如先在Windows的D盘下创建work/reaxff的文件夹,然后创建软链接,如下:

mkdir -p work
cd work 
ln -s /mnt/d/work/reaxff .
ls -l reaxff   # 箭头指向文件原始位置

 lrwxrwxrwx 1 reaxff reaxff 19 Apr 14 22:24 reaxff -> /mnt/d/work/reaxff/

各位朋友们,正文开始啦~

2 Linux命令分析species.out文件

利用Lammps跑过ReaxFF MD模拟的朋友们都了解,利用 reax/c/species 命令可以生成包含分子片段的文件,本文命名为species.out文件。该文件包含输出Timestep下的分子片段的种类和数量,但也需要进一步处理获取所需信息,本文将利用本系列已学linux命令进行简单处理。关于其详细处理本系列等后面还会有详细深入的介绍,敬请期待哦~


2.1 如何获取测试文件?

关注微信公众号:码农不会写诗

回复关键词:species

将拿到的文件(species.out)放到D盘下的work/reaxff文件夹

cd reaxff
ls -l   # 可以看到文件已经同步到reaxff目录下了

 species.out

查看文件(more species.out)可以发现,偶数行以#开头,为分子片段等信息,奇数行数字和偶数行每列对齐为其数量信息。

2.2 常用命令整理

以下纯纯纯干货,建议关注收藏食用

2.2.1 统计所有Timestep

查看species.out文件所有的Timestep

FILE=species.out; grep '^[0-9]' $FILE | awk '{print $1}' | xargs

2.2.2 统计某个Timestep的分子信息

查看某个Timestep的信息,如下为229000

TIEMSTEP=229000; FILE=species.out; grep $TIEMSTEP $FILE -B1

2.2.3 统计某Timestep下某分子片段的数量

查看某Timestep下某分子片段的数量,如下为查看229000下C2H4的数量

TARGET=C2H4; TIMESTEP=229000; grep $TIMESTEP species.out -B1 | tr -d '#' | awk -v TARGET="$TARGET" 'NR==1{INDEX=0; split($0, WS, " "); for(i=1; i<=length(WS); i++) {if (WS[i] == TARGET) {INDEX=i}} } NR==2{ if(INDEX==0) {print 0} else {print $INDEX} }'

2.2.4 统计所有Timestep下出现的所有分子片段

查看species.out文件中所有Timestep下出现的分子片段

FILE=species.out; awk '{ if(NR%2==1) {split($0, WS, " "); for(i=5; i<=length(WS); i++) {print WS[i]}}}' $FILE | sort | uniq | xargs

2.2.5 统计所有Timestep下某个分子片段的数量变化

 查看species.out文件中所有Timestep下某分子片段的数量变化,如下为C2H4的数量变化。这里会换行输出每个Timestep下的数量,若想不换行输出,命令尾部添加【 | xargs】即可。

TARGET=C2H4; FILE=species.out; awk -v TARGET="$TARGET" '{ if(NR%2==0) { if(INDEX==0) {print 0} else {print $INDEX} } else {INDEX=0; split($0, WS, " "); for(i=1; i<=length(WS); i++) {if (WS[i] == TARGET) {INDEX=i-1}}}}' $FILE

通过以上方式稍加整理就可以分析分子数量的所有信息,感兴趣的朋友们在此基础上可以做的更自动更易用,也欢迎大家随机交流和反馈!


相信各位看官朋友无论是否会用到今天分享的相关命令,都能感受到linux命令的强大之处。对我来说,每次类似场景都会让我深感震撼,学海无涯苦作舟吧!今天就到这里啦,拜了个拜~


上一篇:Linux(Ubuntu)常用命令-基础进阶

下一篇:Linux(Ubuntu)常用命令PDF免费分享

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农不会写诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值