LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 926|回复: 2

请教下为什么这个shell无法正常执行

[复制链接]
发表于 2010-8-24 17:10:13 | 显示全部楼层 |阅读模式
我有两个文件,其中一个叫 Head,里面存放的内容格式为:

571    1234567
572    1234545
....

中间的分隔符为一个tab;

另一个文件,名字叫body,存放的内容格式为:
12345678910
12345451235
....

前七位与head中的某一个相对应.

我现在要写一个脚本,要求是 输入"571"这样的参数,输出body中"571"所对应的"1234567"等开头的所有行.我写的代码如下:
  1.    #!/bin/bash
  2.    #LIST=`grep $1 head|awk '{print $2}'`
  3.    for i in `grep $1 head|awk '{print $2}'`;
  4.    #for i in $LIST;
  5.    do
  6.    grep $i body
  7.    #echo $i
  8.    #echo $LIST
  9.    done
复制代码

注释的地方是我的一些调试代码. 现在这个shell的执行情况是倘若echo $i的话,结果正常;如果grep $i body 的话,则没有输出. 这中间什么地方写错了吗?
发表于 2010-8-25 01:45:57 | 显示全部楼层
估计是因为你的文件是DOS格式里,行结束是\r\n。
所以awk打出来的是1234567\r。所以匹配不上,
用awk -v RS='(\n|\r)+' '{print $2}'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-25 08:50:26 | 显示全部楼层
果然如此,非常感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表