如何使用Unix命令sed将匹配组的大小写从小写更改为大写?
谢谢 马丁
将匹配模式用括号括起来,例如:\(pattern\),然后使用 \U\1 作为替换文本。其中 \1 表示匹配的模式,\U 强制使用大写字母。
echo abcdef | sed -e 's/\(abc\)/\U\1/'
运行它通过tr?
开个玩笑。您可以使用y///转换来进行大小写更改。虽然不是非常方便,但它是功能性的。如果您的转换过于复杂,您可能需要考虑升级到perl。
我知道这是一个关于sed的问题,只是想指出有几种方法可以实现这个功能。awk是一个用于文本处理的工具,在某些情况下更容易使用。在我看来,这就是其中之一:
#!/bin/sh
INFO="This is a test"
ALLCAPS=`echo $INFO | awk '{print toupper($0)}'`
echo $ALLCAPS
输出:这是一个测试
"s"命令是sed中最常用和最强大的命令之一。它用于替换文本中的指定字符串或正则表达式。该命令的基本语法为:"s/old/new/",其中“old”表示要被替换的字符串或正则表达式,“new”则是用来替换它的字符串。可以使用不同的字符作为分隔符,例如 "/"、"#"、"|" 等等,以避免在替换字符串时需要转义斜杠。如果只想替换每行中第一个匹配到的字符串,则可以在命令结尾处添加 "1";如果想替换所有匹配到的字符串,则可以使用 "g" 选项。
- Ian Mackinnons#\(^.*:\)\(.*\)#\1\L\2#
- James Morris\E
用于结束转换很有帮助,因为\U
/L
并不仅适用于捕获组。 - nhed