红联Linux门户
Linux帮助

shell编程问题

发布时间:2011-07-14 09:34:47来源:红联作者:年年年
我用awk来筛选名为tmp文件中的信息
目的是输入一个字符串,然后判断tmp中的第一列是否有与之相匹配的字符串,有则输出该字符串所在的行。
我先用
enter=$1 将输入保存起来,
然后
awk ‘{if ($enter == $1) print $0}’ tmp
结果却是把所有行都输出了。。。
为什么? 是不是那个$1没有改变,还是我之前输入的那个字符串?还是说其它原因?!
跪求编程高手们指教~
文章评论

共有 4 条评论

  1. D调漫步 于 2011-08-06 09:03:58发表:

    路过

  2. 年年年 于 2011-07-15 10:33:22发表:

    3# alick


    谢谢您的提醒。但是有个问题,它会指着第一个\ 说“backslash not last character on line”。
    现在我用了awk -v str=$enter '{if ($1 == str) print $0}' tmp,把参数传进awk里面就行了。

  3. alick 于 2011-07-14 13:30:32发表:

    改成[code]awk "{if (\"$enter\" == \$1) print \$0}" tmp[/code]楼主的写法的问题在于 $enter 是bash脚本的变量,需要被替换成对应的值。
    但是命令行上单引号里的串 $ 取字面意义,不会被视为变量的标志。

    提醒:可以用bash -x 脚本名,调试shell脚本

  4. 年年年 于 2011-07-14 09:58:16发表:

    更正一下,结果是没有输出