24小时热门版块排行榜    

查看: 1100  |  回复: 3

yjcmwgk

禁虫 (文坛精英)

密度泛函·小卒

优秀版主

[求助] 请问,一个非常简单的shell脚本,我却无法让他正常运行,请问我做错了什么吗? 已有2人参与

有个文件,内容如下:
CODE:
-----------------------------
/home/g/zly/subsmbinpc/S-f8bophf-aicd.log
Leave Link    1 at Mon Jun 15 15:25:55 2015, MaxMem=  5368709120 cpu:         0.7
#p m06/epr-iii nmr(csgt) iop(10/93=1) scf(conver=6)
-----------------------------
/home/g/q/42pie-irc.log
Leave Link    1 at Mon Jun 22 11:09:03 2015, MaxMem=  8053063680 cpu:         2.4
#p 6-311+g(d,p) scrf=(iefpcm,solvent=methanol) empiricaldispersion=gd3
Job cpu time:      13 days  7 hours 27 minutes 12.8 seconds.
Normal termination of Gaussian 09 at Tue Jun 23 03:11:10 2015.
-----------------------------
/home/g/wcm/SubPc/Exercise/17-th-irc-4.log
Leave Link    1 at Tue Jun 23 10:00:51 2015, MaxMem=  8053063680 cpu:         1.1
#p 6-311+g(d) geom=connectivity empiricaldispersion=gd3 m062x scf=conv

我想把它改成这样
CODE:
-----------------------------
File Name: /home/g/zly/subsmbinpc/S-f8bophf-aicd.log
Start Time: Mon Jun 15 15:25:55 2015
CMD Line: #p m06/epr-iii nmr(csgt) iop(10/93=1) scf(conver=6)
-----------------------------
File Name: /home/g/q/42pie-irc.log
Start Time: Mon Jun 22 11:09:03 2015
CMD Line: #p 6-311+g(d,p) scrf=(iefpcm,solvent=methanol) empiricaldispersion=gd3
Total Time: 13 days  7 hours 27 minutes 12.8 seconds.
State: Normal
-----------------------------
File Name: /home/g/wcm/SubPc/Exercise/17-th-irc-4.log
Start Time: Tue Jun 23 10:00:51 2015
CMD Line: #p 6-311+g(d) geom=connectivity empiricaldispersion=gd3 m062x scf=conv

我弄了这么个脚本
CODE:
cat whsglswjgcngswgthbwxs | while read line;do
  if  [[ ${line:0:2} = " L" ]] ; then
    echo -e 'Starting Time: \c'
    echo ${line:20:44}
  else
    if [[ ${line:0:2} = " #" ]] ; then
      echo -e 'CMD Line: \c'
      echo $line
    else
      if [[ ${line:0:2} = "--" ]] ; then
        echo $line
      else
        if [[ ${line:0:2} = " J" ]] ; then
          echo -e 'Total Time: \c'
          echo ${line:22:59}
        else
          echo ${line:0:7}
        fi
      fi
    fi
  fi
done

按说很简单啊,但是屏幕上却输出了这些东西
CODE:
-----------------------------
/home/g
Leave L
#p m06/
-----------------------------
/home/g
Leave L
#p 6-31
Job cpu
Normal
-----------------------------
/home/g
Leave L
#p 6-31

请问 我是做错了哪儿了?非常感谢各位高手!!!!!
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Logic0

新虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yjcmwgk: 金币+50, ★★★★★最佳答案, 谢谢!其实我一直用大蟒蛇,遇到同行好感动!握爪 2015-07-09 10:19:02
第一次在小木虫回答问题,希望能帮助到你。
这个字符串处理的问题,非常建议楼主使用 Python 来做,整个就会变得非常简单。
如果在某种情况下必须使用 shell,建议使用 awk 进行文本处理。
这里附上python 2.7 的代码,可以看到逻辑非常清晰易懂。
CODE:
# 遍历文件行
for line in file("t.txt"):
    if( line.startswith("-----") ):
        continue
    if( line.startswith("/home") ):
        print "File Name: %s" % line.strip()
        continue
    if( line.startswith("Leave") ):
        print "Start Time: %s" % line.strip()[11:line.find(",")]
        continue
    if( line.startswith("#p") ):
        print "CMD Line: %s" % line.strip()
        continue
    if( line.startswith("Job cpu time") ):
        print "Total Time: %s" % line.strip()[14:]
        continue

    print "State: %s" % line.strip().split(" ")[0]


关键点讲解:
字符串.startswith("start"  ----> 判断字符串是否以 start 开头
字符串.strip()  ---> 删除多余的不可见字符,这里用来删除每行的换行符
字符串[x:y]  --->  截取从 第x个字符开始到 第y 个字符结束的子串,y 不写 表示 到末尾
2楼2015-06-23 15:51:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤狼

金虫 (正式写手)

独行者

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yjcmwgk: 金币+35, ★★★★★最佳答案, 其实楼上不知道我这几年一直python哈哈 2015-07-09 10:20:01
cat tv | while read line;do
  if  [[ ${line:0:1} = "L" ]] ; then
    echo -e 'Starting Time: \c'
    echo ${line:20:44}
  else
    if [[ ${line:0:1} = "#" ]] ; then
      echo -e 'CMD Line: \c'
      echo $line
    else
      if [[ ${line:0:1} = "--" ]] ; then
        echo $line
      else
        if [[ ${line:0:1} = "J" ]] ; then
          echo -e 'Total Time: \c'
          echo ${line:22:59}
        else
          if [[ ${line:0:1} = "/" ]] ; then
            echo -e 'File Name :\c'
            echo $line
          else
            if [[ ${line:0:1} = "N" ]] ; then
               echo "State: Normal"
                 else
                    echo ${line:0:10}

            fi
          fi
        fi
      fi
    fi
  fi
done
发过来抢BB了,话说上面人用python打你脸了
轮回的过往,注定的未来;独孤的行者,孤独的路途……
3楼2015-06-23 16:37:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Logic0

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 独孤狼 at 2015-06-23 16:37:16
cat tv | while read line;do
  if  [] ; then
    echo -e 'Starting Time: \c'
    echo ${line:20:44}
  else
    if [] ; then
      echo -e 'CMD Line: \c'
      echo $line
    else
      if []  ...

哈哈哈,合适的工作做合适的事情嘛
4楼2015-06-23 16:56:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yjcmwgk 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 科研孤儿太难了 +14 我4大白菜 2026-08-20 15/750 2026-08-20 22:33 by 袁向阳007
[基金申请] 让我中一个面上吧! +8 大萍1987 2026-08-20 10/500 2026-08-20 21:48 by 大萍1987
[基金申请] 言之凿凿,明天官网会通知放榜? +15 医学老男孩 2026-08-20 17/850 2026-08-20 20:35 by CaoLG
[基金申请] 时间戳又变了 +12 wuchongjun 2026-08-20 17/850 2026-08-20 20:05 by spzhao
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 今天放榜没戏了吧 +4 yuleib84 2026-08-19 5/250 2026-08-19 19:52 by hhs666
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] filecode=后面第一个是大写字母 +10 wangze12014 2026-08-14 12/600 2026-08-19 16:56 by 苦难博士
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 什么时候开奖? +6 CrisMessi 2026-08-18 6/300 2026-08-19 08:06 by Equinoxhua
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[论文投稿] 投稿咨询 +4 wwm09 2026-08-17 6/300 2026-08-18 15:36 by wwm09
[基金申请] 时间戳又变了8-15 +14 archvillain 2026-08-15 26/1300 2026-08-18 13:37 by phantomgost
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
信息提示
请填处理意见