shell中使用tr命令出了问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
yanboyuan
帖子: 42
注册时间: 2013-12-11 8:44
系统: ubuntu 12.04

shell中使用tr命令出了问题

#1

帖子 yanboyuan » 2014-04-30 21:37

用的是老师给的ppt上的例子,FILE是文件名,完成功能是对该文件的单词进行排序,并输出出现次数最高的top10.
NUM表示输出的出现次数最高的单词的个数。

tr -sc "[A-Z][a-z]" "[\012*]" < $FILE | \ #1、将所有大小写英文字母之外的字符转化为一个回车,并且将多个回车压缩为一个。使用tr命令。
tr "[A-Z]" "[a-z]" | \ #2、将所有的大写字母转化为小写字母。
sort -t\r | \ #3、排序,结果是按字典顺序排好的单词列表,相同的单词挨在一起。
uniq -c | \ #4、在每个单词之前显示出现的次数,并且删除重复的行。
sort -r -k1 | \ #5、按照出现的次数降序排序。
head -$NUM | nl

运行后报错信息如图所示。

求各位帮帮忙啊!
附件
homework3.png
头像
astolia
论坛版主
帖子: 6456
注册时间: 2008-09-18 13:11

Re: shell中使用tr命令出了问题

#2

帖子 astolia » 2014-04-30 23:07

当你用\作为连接下一行之用时,必须要在行尾。也就是后面不能有其他字符。你那后面一堆注释都不能要

tr -sc "[A-Z][a-z]" "[\012*]" < $FILE | \
tr "[A-Z]" "[a-z]" | \
sort -t\r | \
uniq -c | \
sort -r -k1 | \
head -$NUM | nl
yanboyuan
帖子: 42
注册时间: 2013-12-11 8:44
系统: ubuntu 12.04

Re: shell中使用tr命令出了问题

#3

帖子 yanboyuan » 2014-04-30 23:40

astolia 写了:当你用\作为连接下一行之用时,必须要在行尾。也就是后面不能有其他字符。你那后面一堆注释都不能要

tr -sc "[A-Z][a-z]" "[\012*]" < $FILE | \
tr "[A-Z]" "[a-z]" | \
sort -t\r | \
uniq -c | \
sort -r -k1 | \
head -$NUM | nl

真是谢谢啦!
回复