| 查看: 796 | 回复: 1 | |||
飞翔……金虫 (正式写手)
|
[求助]
sum_dos脚本解析
|
|
!/bin/ksh # Script to sum up DOS files from VASP if [ $# -lt 3 ]; then echo "Usage: sum_dos [0] [start] [end]" echo "Or: sum_dos [1] [j] [k] [l] ..." exit 1 fi type=$1 shift 1 # Contiguous if [ $type -eq 0 ]; then start=$1 end=$2 shift 2 string=$start.to.$end echo $start echo $end # First file i=$start nl=$(wc -l DOS$i | sed 's/://g' | awk '{print $1}') echo $nl sed -n '2,'$nl' p' DOS$i | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1, $2, $3, $4, $5, $6, $7, $2+$4+$6, $3+$5+$7}' >| DOS.tmp i=$((i+1)) while [ $i -le $end ]; do sed -n '2,'$nl' p' DOS$i | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1, $2, $3, $4, $5, $6, $7, $2+$4+$6, $3+$5+$7}' >| DOS.tmp2 paste DOS.tmp DOS.tmp2 | awk '{printf "%15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f \n", $1, $2+$11, $3+$12, $4+$13, $5+$14, $6+$15, $7+$16, $8+$17, $9+$18}' >| DOS.tmp3 mv -f DOS.tmp3 DOS.tmp i=$((i+1)) done else start=$1 shift 1 # First file i=$start nl=$(wc -l DOS$i | sed 's/://g' | awk '{print $1}') echo $nl sed -n '2,'$nl' p' DOS$i | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1, $2, $3, $4, $5, $6, $7, $2+$4+$6, $3+$5+$7}' >| DOS.tmp string=$start for i in "$@"; do echo $i string=$(echo $string.$i) sed -n '2,'$nl' p' DOS$i | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1, $2, $3, $4, $5, $6, $7, $2+$4+$6, $3+$5+$7}' >| DOS.tmp2 paste DOS.tmp DOS.tmp2 | awk '{printf "%15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f \n", $1, $2+$11, $3+$12, $4+$13, $5+$14, $6+$15, $7+$16, $8+$17, $9+$18}' >| DOS.tmp3 mv -f DOS.tmp3 DOS.tmp done fi mv DOS.tmp DOS.SUM.$string rm -f DOS.tmp2 exit 0 求高手指点该脚本是怎样实现求和的,求得是那些和? |
» 猜你喜欢
西南交通大学国家级人才团队2026年博士研究生招生(考核制)—机械、材料、力学方向
已经有3人回复
救命帖
已经有6人回复
存款400万可以在学校里躺平吗
已经有37人回复
英文综述是否需要润色及查重
已经有5人回复
限项规定
已经有5人回复
为什么nbs上溴 没有产物点出现呢
已经有9人回复
招博士
已经有3人回复
最失望的一年
已经有18人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【分享】 最新VASP脚本大全 支持VASP 5.3 (有split_dos; VP; Sumdos; sumup_dos 等)
已经有615人回复
【求助】dos脚本求助
已经有5人回复
y1ding
铁杆木虫 (著名写手)
- 1ST强帖: 1
- 应助: 61 (初中生)
- 贵宾: 0.33
- 金币: 5959.3
- 散金: 1
- 红花: 21
- 帖子: 1884
- 在线: 491.1小时
- 虫号: 142265
- 注册: 2005-12-21
- 专业: 凝聚态物性 II :电子结构
★ ★ ★ ★ ★
franch: 金币+5, 谢谢回帖交流。。。 2014-07-08 08:35:20
franch: 金币+5, 谢谢回帖交流。。。 2014-07-08 08:35:20
|
注意这两句 sed -n '2,'$nl' p' DOS$i | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1, $2, $3, $4, $5, $6, $7, $2+$4+$6, $3+$5+$7}' >| DOS.tmp2 paste DOS.tmp DOS.tmp2 | awk '{printf "%15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f %15.8f \n", $1, $2+$11, $3+$12, $4+$13, $5+$14, $6+$15, $7+$16, $8+$17, $9+$18}' >| DOS.tmp3 linux下,看一下sed awk命令的含义即可 |
2楼2014-07-05 20:50:00













回复此楼