想写这么一个shell script, 找出一个文件比如test中出现hello的次数。
请大家帮帮忙,我还没想出来。
mygod 回复于:2002-01-29 11:13:59
小弟有一计,不知可否:
awk '/hello/{print $0}' test > test1
awk 'BEGIN{FS='\n';OFS=''}{print $0}' test1 > test2
sed 's/$/aaa/' test2 > test3
awk 'BEGIN{FS='hello';OFS='\n';}' test3 > test4
length=`cat test3 | wc -l`
length=`length - 1`
shirley 回复于:2002-01-29 11:38:21
执行了一下,有语法错误。我再仔细看看。
看的出来,阁下的shell水平很高。
或许命令awk的使用是关键,这个我不很熟,需要恶补一下。
mygod 回复于:2002-01-29 11:46:58
可能是最后一句有错,我的意思是将length的值减去1,可能写法不对
shirley 回复于:2002-01-29 11:57:01
好象第一行执行就有错。可能是分隔符闹的吧。
最后一句确实不对,应该是:
length=`expr $length - 1`
mygod 回复于:2002-01-29 12:31:39
/hello/和{print $0}之间应当有空格,程序的思路大体是这样:
首先,将文件中所有包含'hello'的行输出到test1中,然后将文件的所有行连成一行输出到test2,这样test2就变成了只有一行的文件,然后为了避免文件的最后一个单词是'hello'造成边界问题,在test2的最后加上'aaa',输出到test3,然后以'hello'为分割符,回车为输出的分割符将内容输出到test4,这样文件中有多少个'hello'就会有多少个回车,也就是有多少行,当然最后别忘了减一
feeling 回复于:2002-01-29 14:23:43
[这个贴子最后由feeling在 2002/01/29 03:47pm 编辑]
赋值语句可以直接用 let length=$length-1
shirley 回复于:2002-01-29 14:43:03
引用:下面引用由[u]feeling[/u]在 2002/01/29 02:23pm 发表的内容:
赋值语句可以直接用 $length=$length-1 或者 let length=$length-1
你这指的是什么shell呀。据我所知,B SHELL和K SHELL是不能这样写的。
feeling 回复于:2002-01-29 15:43:52
[这个贴子最后由feeling在 2002/01/29 03:48pm 编辑]
写错了一点,已经修改。
在K Shell 下调试通过
mygod 回复于:2002-01-29 17:08:28
请大家开动脑筋,看看还有没有其他方法
梦叮咚 回复于:2002-01-29 17:18:57
我刚学shell,不过觉得上例有些烦琐,用c shell会不会简单一些.
不是很懂,只是提个想法.
feeling 回复于:2002-01-29 18:09:06
如果只是想知道个数的话,可以简单地在vi模式用查找、替换命令来得到。
cpss 回复于:2002-01-29 20:01:42
这样写行不行:
number=`more test|tr 'hello'|wc -w` #计算以hello为界限拔test分为几部分
number=`expr $number - 1` #上面的办法会多计上一个,所以这里减掉一。
mygod 回复于:2002-01-30 10:13:10
[这个贴子最后由mygod在 2002/01/30 10:15am 编辑]
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 怎么 这个 回复 hello 一个 awk sed 这样 发表 引用 mygod |
注册
个人空间
