当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 64 篇帖子 ]  前往页数 1, 2, 3, 4, 5  下一页
作者 内容
1 楼 
 文章标题 : 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 14:58 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
经常在这里看到这样使用 grep、sed等
就是先 cat 一下,再用管道传给 grep 等
比如
cat xxx | grep yyy
cat xxx | sed yyy
……

我在想,为什么要这样做?
既然完全可以直接使用,比如
grep yyy xxx
sed yyy xxx
为什么要先 cat 一下呢?
使用cat比不用cat有什么好处吗?
如果没有任何好处的话,那真是多此一举,太令人费解了!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 15:05 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
个人习惯问题。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 15:41 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
有些差异的。
具体归纳不会,只是碰到过。管道后,正常得多。


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 16:20 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
有些差异的。
具体归纳不会,只是碰到过。管道后,正常得多。


请举个例子


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 16:25 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
xiooli 写道:
个人习惯问题。


如果只是习惯的问题的话
这不能说是个好的习惯
因为有比这更为简洁、更为直接且更为标准的使用方法
而且容易误导新手,让他们以为 grep 就是这么用的呢~~~~~~~~


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-24 23:11 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
我一般能不用管道就不用管理,少打几个字符总是省点力气。
楼主举的两个例子没看出有用管道的必要。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-25 9:37 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
aerofox 写道:
我一般能不用管道就不用管理,少打几个字符总是省点力气。
楼主举的两个例子没看出有用管道的必要。


我就觉得吧,完全没有必要!

如果在某些情况下却有必要的话,我想知道在什么情况下有必要

那些经常配合cat+管道用的大侠们,给个例子说明一下必要性啊


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-25 10:12 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
太久了,例子不记得了。反正管道可能过滤了某些控制代码。另外,有可能是grep sed这些打开文件,使用的函数可能有差异,导致某些编码方面的强壮性不足。


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-25 10:51 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
太久了,例子不记得了。反正管道可能过滤了某些控制代码。另外,有可能是grep sed这些打开文件,使用的函数可能有差异,导致某些编码方面的强壮性不足。


没有例子没法说明问题的

用了这么多年了,反正我是从没有遇到过不用管道就不行的时候

而且如你所说,假设“管道可能过滤了某些控制代码”,那么说经过管道处理有可能已经不再是原来的文件了
反而背离了最初的目的:在某个文件中搜索某个pattern(因为文件可能变了)


最后由 goodluck1982 编辑于 2008-12-26 9:24,总共编辑了 1 次

页首
 用户资料  
 
10 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 6:12 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
管道是不会做过滤的,有些程序倒是会区别对待终端IO和文件IO,可能有更多的程序采用不同的方法处理标准输入和命令行参数指定的文件,但真的没有发现grep、sed、awk这些常用程序有什么针对标准输入的特别处理,也没有发现cat对文件有什么过滤作用,所以我仍然至少这几个命令不用用管道,即使不喜欢用命令行参数,改为<改向也可以少打几个字符:)。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 8:33 
头像

注册: 2007-04-06 10:24
帖子: 2487
地址: ~/Shanghai
送出感谢: 0 次
接收感谢: 0 次
只感觉语义比较清晰, cat 什么 然后 grep 什么


_________________
http://silenceisdefeat.com/~greco
代码:
''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 8:35 
头像

注册: 2007-04-06 10:24
帖子: 2487
地址: ~/Shanghai
送出感谢: 0 次
接收感谢: 0 次
再回复一下,貌似讨论这个没什么意义 :em02


_________________
http://silenceisdefeat.com/~greco
代码:
''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 8:46 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
也是,仅对cat情况讨论没什么意义。
等大家自己写的常用脚本,到几十个以后,再说吧。
我随便搜索了下,cat单个文件的情况,其实很少。而不cat,出异常结果的是肯定碰过的。
代码:
cat i.html|enconv|tr '\n' '.'|tr '\r' '.'|sed 's/<a href="/\n/g'|sed 's/<\/span>/\n/g'|grep Date|sed 's/target.*Date//g'|sed 's/"[^"]*"/>/g'|egrep $1>>j.html
cat *.lst|sed s/l,[0-9][^l]*$/l/g|sed s/^s[^,]*,//|tr , '\n'|sed s/^/http:\\/\\/www.*\\/bbs\\//>$NOW.list
cat /home/exp/.ccdd.list|while read i; do echo "$l: $i"; (( l++ )); done


_________________
● 鸣学


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 9:05 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
也是,仅对cat情况讨论没什么意义。
等大家自己写的常用脚本,到几十个以后,再说吧。
我随便搜索了下,cat单个文件的情况,其实很少。而不cat,出异常结果的是肯定碰过的。
代码:
cat i.html|enconv|tr '\n' '.'|tr '\r' '.'|sed 's/<a href="/\n/g'|sed 's/<\/span>/\n/g'|grep Date|sed 's/target.*Date//g'|sed 's/"[^"]*"/>/g'|egrep $1>>j.html
cat *.lst|sed s/l,[0-9][^l]*$/l/g|sed s/^s[^,]*,//|tr , '\n'|sed s/^/http:\\/\\/www.*\\/bbs\\//>$NOW.list
cat /home/exp/.ccdd.list|while read i; do echo "$l: $i"; (( l++ )); done


您总是“肯定”碰到过
却把这么重要的例子给忘了
如何令人信服?

另,这是我的 ~/bin 目录,下面除了链接以外,绝大部分都是我自己写的脚本
(个别是网上找到的),当然,大部分比较简单,但附杂的同样有
附件:
shot.png
shot.png [ 17.04 KiB | 被浏览 3582 次 ]



页首
 用户资料  
 
15 楼 
 文章标题 : Re: 为什么要使用 cat + grep、sed、awk、……
帖子发表于 : 2008-12-26 9:14 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
greco 写道:
只感觉语义比较清晰, cat 什么 然后 grep 什么


我觉得直接 grep什么 语意最清晰!
反而加了 cat什么 ,容易让人迷惑,这个cat到底是干什么地?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 64 篇帖子 ]  前往页数 1, 2, 3, 4, 5  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译