标签:
[chengmo@centos5 shell]$ (sed -n ‘1,$p‘|grep -n ‘echo‘)<test.sh 5: echo "very good!"; 7: echo "good!"; 9: echo "pass!"; 11: echo "no pass!"; #这个脚本比较有意思了。由于前面是管道,后面需要把test.sh内容重定向到 sed ,然后sed输出通过管道,输入给grep.需要将前面用"()"运算符括起来。在单括号内的命令,可以把它们看作一个象一个命令样。如果不加括号test.sh就是grep 的输入了。 #上面一个等同于这个 [chengmo@centos5 shell]$ sed -n ‘1,$p‘<test.sh | grep -n ‘echo‘ 5: echo "very good!"; 7: echo "good!"; 9: echo "pass!"; 11: echo "no pass!"; #重定向运算符,在shell命令解析前,首先检查的(一个命令,执行前一定检查好它的输入,输出,也就是0,1,2 设备是否准备好),所以优先级会最高 [chengmo@centos5 shell]$ sed -n ‘1,10p‘<test.sh | grep -n ‘echo‘ <testsh.sh 10:echo $total; 18:echo $total; 21: echo "ok"; #哈哈,这个grep又接受管道输入,又有testsh.sh输入,那是不是2个都接收呢。刚才说了"<"运算符会优先,管道还没有发送数据前,grep绑定了testsh.sh输入,这样sed命令输出就被抛弃了。这里一定要小心使用
(转载自http://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html)
标签:
原文地址:http://www.cnblogs.com/byleaf/p/4346276.html