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

使用sed将单数/复数单词转换为大写,sed,Sed,使用一个sed命令,我试图将.txt文件中出现的所有test和tests转换为所有caps。我还想只打印转换后的行,所以我使用-n。我已经玩了一个多小时了。问题是我能够转换一个或另一个(测试或测试),但不能同时转换两个 任何帮助都将不胜感激。谢谢大家! 用这个 sed -e 's/tests/TESTS/g; s/test/TEST/g; T; p;' input.txt 分号允许您执行多个命令。这可能适用于您(GNU-sed): sed的/\/\U&/gp;d'文件 这将是以可选的s(s\

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

任何帮助都将不胜感激。谢谢大家!

用这个

sed -e 's/tests/TESTS/g; s/test/TEST/g; T; p;' input.txt
分号允许您执行多个命令。

这可能适用于您(GNU-sed):

sed的/\/\U&/gp;d'文件

这将是以可选的
s
s\?
)开头的大写单词(
\
)。

很抱歉响应太晚,但希望这里有一个可以理解的基本正则表达式(没有扩展正则表达式):

sed's:\:TEST\1:g'outputFile.txt;cat outputFile.txt | grep-n测试
说明:

  • 分隔符(而不是通常的/)
  • \
    匹配测试。第一个
    t
    前面的字符可以是字母、数字或下划线以外的任何字符。这同样适用于最后一个
    t
    之后的字符
  • \(\)
    记住括号内的内容
  • s*
    匹配零个或多个
    s
  • \1
    用于插入第一个记忆中的匹配项(即任何数量的
    s
    匹配项)

剩下的希望很清楚。否则请留下评论。

如果我想打印这些行,我只需在g后面加一个p('s/tests/tests/gp;?非常感谢您的帮助!@Chalmers否,您必须在最后一个分号后面加一个p。这将打印所有行。请显示您已经尝试过的内容(通过解释进行更正),并经常显示一个输入示例作为预期输出
sed 's/\<tests\?\>/\U&/gp;d' file