24小时热门版块排行榜    

查看: 2212  |  回复: 12

贺仪

铁杆木虫 (著名写手)

[求助] 怎么替换一文本文件里面的内容?

这个问题或许大家也会经常遇到,
一般对于计算某种物质的性质,首先先要结构优化,然后才能计算性质。有时候结构优化的设置与静态计算的性质的设置相差不大,因此可以直接替换坐标,去掉与结构优化相关的设置,比如说原来的输入文件是:
AAAAAA
BBBBBBBB
CCCCCCCC
DDDDDDD
EEEEEEEEE
FFFFFFFFF

其中C是左边,D是结构优化的设置,
我们优化完这个结构后 可以直接的到一个输出文件,这个文件只有左边信息也就是C‘C’C‘C’C‘C’C‘
那么 如果我想替换原来的CCCCCCC 并去掉DDDDD 应该怎么操作呢?

我以前都是写Fortran程序来处理的,现在觉得shell语言更容易实现,想学一学,但没有人指导,自己愚笨看哪个awk一直没看懂,
有没有哪位行家可以给个示范呀?先谢谢大家了!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

嘟啦啦嘟啦啦嘟
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

贺仪

铁杆木虫 (著名写手)

引用回帖:
5楼: Originally posted by bianyuan2680 at 2013-10-17 14:03:08
sed -i ‘s/被替换的/要替换为的/g’ 要处理文件名

如果我要替换一大段{}里面的东西呢?怎么弄?
嘟啦啦嘟啦啦嘟
6楼2013-10-17 12:44:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

贺仪

铁杆木虫 (著名写手)

引用回帖:
5楼: Originally posted by bianyuan2680 at 2013-10-17 14:03:08
sed -i ‘s/被替换的/要替换为的/g’ 要处理文件名

如果就单行 但是我的替换的行中有'/'呢?
如:# opt b3lyp/3-21+g替换为 # b3lyp/3-21+g 怎么弄合适呢?
嘟啦啦嘟啦啦嘟
7楼2013-10-17 12:55:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChemiAndy

木虫 (正式写手)


【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
贺仪: 金币+7 2013-10-17 13:46:29
假如你原来的输入文件是template,并且只替换中间几行坐标,且假设坐标存放在coord.xyz文件中,那么:
1. 先把首尾存成文件:
CODE:
head -3 template > head.txt
tail -2 template > tail.txt

2. 然后直接生成新的输入文件input:
CODE:
cat head.txt > input
cat coord.xyz >> input
cat tail.txt >> input
(注意 > 是创建文件, >> 是在文件后添加内容)

上面是个很笨的办法。不过这也是unix的精髓,就是keep it simple stupid.
Linux的优点是处理文本文件极快,因此上述过程配合循环可以实现复杂的功能。
8楼2013-10-17 13:02:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

安德

铁杆木虫 (著名写手)

** *_** ___ ***_ * _*

不懂,帮顶!
That'sit! Justdoit!
2楼2013-10-17 09:07:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
贺仪: 金币+5, ★★★很有帮助, 谢谢!我想看看你后面背景的那个网页,哪个教程详细些。我要做的是替换大量的坐标不是一两行,但从你的回答中没领悟出来怎么替换好多行…… 希望你能继续给予指导!谢谢! 2013-10-17 11:53:07

怎么替换一文本文件里面的内容?
捕获.JPG

3楼2013-10-17 09:20:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jerkwin

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
贺仪: 金币+3, 有帮助, 谢谢指导!’写几句脚本把优化好的构型提取出来, 存成输入文件就是了‘,这个是可以,我以前就这么做的,但是感觉肯定有更方便的做法 2013-10-17 11:55:15
替换什么. 写几句脚本把优化好的构型提取出来, 存成输入文件就是了
awk只要你理解了工作模式很简单的
实在不济也可以把它当成脚本C来用
4楼2013-10-17 09:40:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bianyuan2680

至尊木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
贺仪: 金币+5, ★★★很有帮助, 谢谢支持! 2013-10-17 12:44:35
sed -i ‘s/被替换的/要替换为的/g’ 要处理文件名
5楼2013-10-17 12:03:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bianyuan2680

至尊木虫 (著名写手)

【答案】应助回帖

引用回帖:
7楼: Originally posted by 贺仪 at 2013-10-17 12:55:15
如果就单行 但是我的替换的行中有'/'呢?
如:# opt b3lyp/3-21+g替换为 # b3lyp/3-21+g 怎么弄合适呢?...

sed -i ‘s/# opt b3lyp\/3-21+g/# b3lyp\/3-21+g /g’ 要处理文件名

'/'  ----> '\/'   就是在原来的基础上加上反斜杠
9楼2013-10-17 13:16:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bianyuan2680

至尊木虫 (著名写手)

【答案】应助回帖

引用回帖:
6楼: Originally posted by 贺仪 at 2013-10-17 12:44:23
如果我要替换一大段{}里面的东西呢?怎么弄?...

这个有点类似word里面的替换,大段分行之类的应该不行,楼下那个用cat命令处理分段的很好用
10楼2013-10-17 13:20:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 贺仪 的主题更新
信息提示
请填处理意见