为什么要使用 cat + grep、sed、awk、……
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 为什么要使用 cat + grep、sed、awk、……
29 楼讲的也许是他的理由,没什么可说的。只是不理解那个“要加引号”,如果文件名要加引号,那么不管它放到 cat 后还是 grep 后都要加啊。
- goodluck1982
- 帖子: 171
- 注册时间: 2007-07-05 2:48
Re: 为什么要使用 cat + grep、sed、awk、……
没错!
加不加引号和用不用 cat 完全是两个问题
若不用cat需要加引号,那么用cat同样需要加引号
若用cat不需加引号,不用cat也同样不需加引号
我想这或许就是“知其然不知其所以然”造成的
不提倡盲目的使用cat也正是想避免这种情况
简单的模仿并修改他人的代码,最容易导致“知其然不知其所以然”了!
加不加引号和用不用 cat 完全是两个问题
若不用cat需要加引号,那么用cat同样需要加引号
若用cat不需加引号,不用cat也同样不需加引号
我想这或许就是“知其然不知其所以然”造成的
不提倡盲目的使用cat也正是想避免这种情况
简单的模仿并修改他人的代码,最容易导致“知其然不知其所以然”了!
-
- 帖子: 1331
- 注册时间: 2006-07-09 12:22
- 来自: 南京
Re: 为什么要使用 cat + grep、sed、awk、……
我通常 cat/more 多些。我从不低估每个人的潜能,所以对“新手”说教、提醒亦或建议之类,一直以为没什么必要。
但我从没听说过管道可以提高效率。管道产生子进程,shell 书上讲尽量少用管道,难道是单核时代的局限性?
但我从没听说过管道可以提高效率。管道产生子进程,shell 书上讲尽量少用管道,难道是单核时代的局限性?
- goodluck1982
- 帖子: 171
- 注册时间: 2007-07-05 2:48
Re: 为什么要使用 cat + grep、sed、awk、……
直接more就可以了,还要cat干什么?
我也没有低估谁的潜能,只是正确的学习过程(我依然坚持认为:学习grep,若一开始就是 cat file |grep xx,并非正确的过程)能更好更快的发挥其潜能
就好比小学生开始学算术,总是先认识数字,再认识加减法,再认识乘除法的。
如果一上来就教 2+3x4,显然不是正确的步骤
同样道理
对 cat file | grep xx
应该先学会 grep 怎么用: grep xx file
再认识 cat 的用法:cat file
然后是认识管道的作用: |
三者都了解了,才能真正懂得 cat file | grep xx 是怎么回事
我也没有低估谁的潜能,只是正确的学习过程(我依然坚持认为:学习grep,若一开始就是 cat file |grep xx,并非正确的过程)能更好更快的发挥其潜能
就好比小学生开始学算术,总是先认识数字,再认识加减法,再认识乘除法的。
如果一上来就教 2+3x4,显然不是正确的步骤
同样道理
对 cat file | grep xx
应该先学会 grep 怎么用: grep xx file
再认识 cat 的用法:cat file
然后是认识管道的作用: |
三者都了解了,才能真正懂得 cat file | grep xx 是怎么回事
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
- goodluck1982
- 帖子: 171
- 注册时间: 2007-07-05 2:48
Re: 为什么要使用 cat + grep、sed、awk、……
使用 rm `ls *.bak`
不仅不会避免 too many arguments
而且还会导致新的问题,那就是如果文件名中有空格的时候
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 为什么要使用 cat + grep、sed、awk、……
没错。而且如果设置了 alias ls='ls -F',那还有可能误删除文件,因为 ls -F 会在可执行文件后加 *。goodluck1982 写了: 使用 rm `ls *.bak`
不仅不会避免 too many arguments
而且还会导致新的问题,那就是如果文件名中有空格的时候
-
- 帖子: 50
- 注册时间: 2007-10-31 17:00
Re: 为什么要使用 cat + grep、sed、awk、……
楼主提的很好,这个和习惯的确有关系。但是写在脚本里,效果差别就明显体现 现出来了。大文件cat一下,再grep,可能要很长时间,但是直接grep会少个步骤,效率上明显的改观。
- HuaChong
- 帖子: 493
- 注册时间: 2006-09-12 17:10
Re: 为什么要使用 cat + grep、sed、awk、……
lz的怀疑批判的学习精神我很敬佩,我在看完这个链接,觉得你是对的。从时间的角度来考虑。goodluck1982 写了:我觉得直接 grep什么 语意最清晰!greco 写了:只感觉语义比较清晰, cat 什么 然后 grep 什么
反而加了 cat什么 ,容易让人迷惑,这个cat到底是干什么地?
http://www.ibm.com/developerworks/cn/ai ... abits.html
这篇文章中有这么一段,停止对cat使用管道。
- goodluck1982
- 帖子: 171
- 注册时间: 2007-07-05 2:48
Re: 为什么要使用 cat + grep、sed、awk、……
多谢LS的支持!
其实我发帖的出发点是:好多新手一开始就看到满眼的 cat .. | grep ...,根本不知道grep是可以直接用的!这对初学者是很不利的。

其实我发帖的出发点是:好多新手一开始就看到满眼的 cat .. | grep ...,根本不知道grep是可以直接用的!这对初学者是很不利的。
- hyxuzhimin
- 帖子: 249
- 注册时间: 2008-05-09 14:14
Re: 为什么要使用 cat + grep、sed、awk、……
作为新手看了上面大侠们的讨论,真的感到醍醐灌顶啊。内容好像很简单,但是很有深意。 

- syhan
- 帖子: 272
- 注册时间: 2006-09-06 12:24
- 来自: Southeast University
Re: 为什么要使用 cat + grep、sed、awk、……
考,有意义么,怎么就误导了,该rtfm的就该rtfm
awesome + stalonetrayer + urxvt + rox-filer + feh + SLiM
- JustinLei
- 帖子: 87
- 注册时间: 2005-09-20 14:29
- 来自: 弯弯的月亮
-
- 帖子: 4
- 注册时间: 2006-07-28 17:26
Re: 为什么要使用 cat + grep、sed、awk、……
关于管道和多核的论断真是让我笑掉大牙了~~
管道的作用是将前一个进程的输出作为后一个进程的输入,那后一个进程必然要等到前一个进程执行完才会执行,怎么会并行执行呢?!
支持lz的质疑精神~~

管道的作用是将前一个进程的输出作为后一个进程的输入,那后一个进程必然要等到前一个进程执行完才会执行,怎么会并行执行呢?!
支持lz的质疑精神~~

-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系: