0

有人可以向我解释如何使用 sed 将引号内的所有字母大写吗?例如“abcd1234”应该变成“ABCD1234”。引号内的文本长度是可变的。我正在寻找解释,而不仅仅是答案。

编辑:我将在文本文件上使用它。假设我有一个这样的文本文件:

我不想大写的文本以及“我想大写的文本”以及其他一些文本和“一些偶尔引用的文本,也许还有数字”......

4

2 回答 2

2

sed这可能取决于s/"[^"]*"/\U\0/. 例如,这个 Bash 命令:

sed 's/"[^"]*"/\U\0/g' <<< 'foo "bar" baz'

打印这个:

foo "BAR" baz

除了 之外,没有什么要解释的\U,这是一个特殊功能,它会导致替换字符串中的后续文本大写,直到字符串中的一个\E或结尾。

于 2013-10-16T23:58:48.060 回答
0
echo abcd1234 | sed 's/\(.*\)/\U\1/'

对上述命令 (. ) 的小解释将匹配所有字符,因此使用转义序列它将是 (. ) \U --要更改为大写..假设您想将所有内容更改为小写使用 \L 然后 \1粘贴第一个存储值。

来源: http: //nixcraft.com/shell-scripting/15862-sed-convert-text-lower-upper-case.html

于 2013-10-16T23:58:16.360 回答