使用sed将单数/复数单词转换为大写

时间:2014-09-29 02:09:44

标签: sed

使用一个sed命令我试图将.txt文件中发现的所有测试和测试转换为全部大写。我也想只打印转换后的行,所以我使用的是-n。我已经玩了一个多小时了。问题是我能够转换一个或另一个(测试或测试)但不能同时转换。

任何帮助都会非常感激。谢谢!

3 个答案:

答案 0 :(得分:1)

使用此

sed -e 's/tests/TESTS/g; s/test/TEST/g; T; p;' input.txt

使用分号可以执行多个命令。

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed 's/\<tests\?\>/\U&/gp;d' file

这将使用可选\<....\>test)开始s的大写字词{s\?)。

答案 2 :(得分:0)

很抱歉收到的回复很晚,但是希望这里是一个可以理解的基本正则表达式(无扩展正则表达式):

sed 's:\<test\(s*\)\>:TEST\1:g' < inputFile.txt > outputFile.txt; cat outputFile.txt | grep -n TEST

说明:

  • :分隔符(而不是通常的/)
  • \<test\>匹配测试。前t之前的字符可以是字母,数字或下划线以外的任何字符。最后一个t之后的字符也是如此。
  • \(\)记住括号内的内容。
  • s*匹配零个或多个s
  • \1用于插入第一个记住的匹配项(即,任意数量的s的匹配项)。

其余部分希望会很清楚。否则请发表评论。