免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4827 | 回复: 3
打印 上一主题 下一主题

[文本处理] 【求助】帮忙改错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-20 10:25 |只看该作者 |倒序浏览
题目:
Write a script named nonwords that is passed a file containing one word per line, and checks to see if each word exists.
nonwords 输出在“字典文件”没有找到的单词,一行一个.
Once again, accept input from a file or from standard input.
不区分大小写;
Extend your nowords script to include a -i option that ignores any final “s” on each word (if there is one), and then checks to see if the word exists.

我的解法:
#!/bin/bash

if [[ $1 = "-i" ]]; then    #判断是否含有-i参数
        while (read word )
        do
        l_char=$(echo $word | grep -i -o '.$')     #取出最后一个字符
        if [ $l_char = 's' ];then
                n_word=$(echo $word | sed s/.$//)     #如果是s就删除
        else
                n_word=$word              #否则直接赋值到新的变量中
        fi
                if ( ! grep -iqw $n_word $3)        #不区分大小的情况下比较变量和字典文件,如果不存在就输出
                then
                        echo $n_word
                fi
        done < $2         #继续读取

else                               #如果没有-i参数,就直接进行简单步骤
        while (read word)
        do
        if (! grep -iwq word $3)
        then
                echo $word
        fi
        done < $1
fi


我在自己电脑上中执行语句是:
./nonword check.txt dict.txt

./nonword -i check.txt dict.txt
执行没有问题


但是在学校的在线系统中检测会报错:
./nonwords: line 26: $1: ambiguous redirect
...Your nonwords cannot handle words from stdin
...Your nonwords cannot handle words from a file
./nonwords: line 26: $2: ambiguous redirect
...Your nonwords cannot handle the -i option


虽能告诉我怎麽改正?

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
2 [报告]
发表于 2013-08-20 11:32 |只看该作者
shell环境不一样,这个具体情况具体分析吧

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2013-08-20 17:22 |只看该作者
回复 1# ICrazyBox

please try to add -x to find the detail issue ...

#!/bin/bash -x

or

#!/bin/bash
set -x

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2013-08-20 17:35 |只看该作者
学校的在线系统用的什么系统
  1. uname -a
  2. bash --version
复制代码
结果贴出来看看

脚本从windows里面复制过去的吗?
  1. dos2unix ./nonword
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP