awk
纯粹是为了好玩,我想知道如何使用, sed
, tr
, regex 或除 Python 或 Perl 之外的任何其他 Unix 工具将所有小写文本转换为每个其他字母的大写。
到目前为止我已经尝试过
echo "hello" | sed s/\([a-z]\)/\U\1/g
所需的输出应该是HeLlO
. 如果有人可以改进这一点或提供替代方法,我将不胜感激。
$ sed 's/[a-z].\?/\u\0/g' <<< hello
HeLlO
(免责声明:这可能取决于非标准功能。我在 GNU sed 版本 4.2.1 上运行它。)
给你一个awk
方法:
echo "hello" | awk '{for(i=1;i<=NF;i+=2)$i=toupper($i)}1' FS= OFS=
HeLlO
这可能对您有用(GNU sed):
sed 's/[[:lower:]][^[:alpha:]]*\([[:alpha:]]\|$\)/\u&/g' file