昨天需要紧急测试一组翻译结果的得分,其中一个步骤是需要把一个文件每行的首字母大写。
网上查了一下sed脚本,参考的两个网页是
http://www.51testing.com/?uid-375540-action-viewspace-itemid-232269
http://www.pyshell.com/index.php/archives/699
得到的答案都是一致的 sed 's/[a-z]/\u&/'
简单测试了一下,也的确没有问题。
但是,这个小小的步骤导致最终我测试的结果都比正确答案少了10%左右的得分。
同事使用的首字母转大写的命令是 perl -ne 'print ucfirst($_);' inputfile > outputfile
仔细对比了多组结果,发现上面的sed命令存在Bug,因为sed 's/[a-z]/\u&/'实际上是将一行文本里出现的第一个小写字母转换为大写。
正确的sed命令应该是sed 's/^[a-z]/\u&/' [a-z]前面加入的^表示匹配行首。
总结教训,以后再遇到网上找到的shell命令需要仔细的查看并测试后再用,否则很耽误工作啊。
1、如果你只愿意去做轻松的事.生活就是艰难的。 但如果你愿意去做艰难的事情.生活就是轻松的
2、如何真的想做一件事,你一定会找到一个办法。如果不想,你也一定能找到借口
3、影响结果的不是斗志,而是科学