1

awk纯粹是为了好玩,我想知道如何使用, sed, tr, regex 或除 Python 或 Perl 之外的任何其他 Unix 工具将所有小写文本转换为每个其他字母的大写。

到目前为止我已经尝试过

echo "hello" | sed s/\([a-z]\)/\U\1/g 

所需的输出应该是HeLlO. 如果有人可以改进这一点或提供替代方法,我将不胜感激。

4

3 回答 3

1
$ sed 's/[a-z].\?/\u\0/g' <<< hello
HeLlO

(免责声明:这可能取决于非标准功能。我在 GNU sed 版本 4.2.1 上运行它。)

于 2013-08-07T06:22:57.273 回答
1

给你一个awk方法:

echo "hello" | awk '{for(i=1;i<=NF;i+=2)$i=toupper($i)}1' FS= OFS=
HeLlO
于 2013-08-07T07:59:30.770 回答
1

这可能对您有用(GNU sed):

sed 's/[[:lower:]][^[:alpha:]]*\([[:alpha:]]\|$\)/\u&/g' file
于 2013-08-07T15:56:16.027 回答