免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: iceriver68
打印 上一主题 下一主题

shell为什么没有顺序执行? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-10-07 14:14 |只看该作者

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my @num;
  5. my @title;

  6. while (<>) {
  7.     push @num, $1 if (/Num\:(.+)/);
  8.     push @title, $1 if (/Title\:(.+)/);
  9. }

  10. foreach (0 .. $#num) {
  11.     print "mv $num[$_] $title[$_]\n";
  12. #    system("mv $num[$_] $title[$_]");
  13. }
复制代码


development:~# cat num.txt
Num:123
Title:chapter1
Content:123

Num:124
Title:chapter2
Content:124

Num:125
Title:chapter3
Content:126

development:~# ./num.pl num.txt
mv 123 chapter1
mv 124 chapter2
mv 125 chapter3

你那个判断的 写的有点乱...
关键我的grep 预编译不带perl正则的 试不出来..... 所以我只能说我的算法...写不出东西...

论坛徽章:
0
12 [报告]
发表于 2009-10-09 17:00 |只看该作者

回复 #1 iceriver68 的帖子

用awk实现了lz说的最后输出ok:
================================================
#!/bin/sh

while read line
do
  echo $line | awk -F':' '$1~/Num/ {print $2}'
  echo $line | awk -F':' '$1~/Title/ {print $2 "\n" echo "OK"}'
done  < num.txt
================================================
lz的程序每读一行都进行匹配比较,且无论匹配成功与否,都输出一个OK,这样每读一行就会输出一个OK。

论坛徽章:
0
13 [报告]
发表于 2009-10-09 20:53 |只看该作者

回复 #8 iceriver68 的帖子

====================================================
#!/bin/sh
while read line
do
  temp1=`echo $line | awk -F':' '$1~/Num/ {print $2}'`
  if [ -n $temp1 ]; then
    par[0]=$temp1
  fi

  temp2=`echo $line | awk -F':' '$1~/Title/ {print $2}'`
  if [ -n $temp2 ]; then
    par[1]=$temp2
    echo "mv ${par[0]}.txt ${par[1]}.txt"
    mv ${par[0]}.txt ${par[1]}.txt
  fi
done < num.txt
====================================================
程序读取行进行判断,若为Num行,取出:后字符串,存入临时变量temp1,temp1非空,将其存入数组par,为par[0],若不是Num行,则temp1为空,不更新par[0];对Title行的判断同理。当temp2非空时,源文件名及目标文件都已获取,分别存于par[0]和par[1],程序输出将要进行的文件名转换操作,接着完成文件名转换。程序经测试通过。

[ 本帖最后由 HongLian3 于 2009-10-9 20:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP