我有我的正则表达式来查找以“a”开头的 3 个字母单词...
\b[aA][a-z]{2}\b
(似乎有效,据此!检查一下:http ://rubular.com/r/Jil0E4WZnW )
现在我需要知道如何获取该结果并将小写单词替换为大写的三个字母单词。
谢谢!
另一种方法是使用tr
:
echo "Abc" | tr 'a-z' 'A-Z'
在 awk 中调用 toupper 函数:
echo "Abc" | awk '{print toupper($0)}'
得到你:
ABC
您可以使用uc($string);
PERL 的命令。
这个解决方案“作弊”,因为它使用循环和 sub 而不是 gsub,但它在 awk 中并且可以工作。
echo "abc Ape baaa ab abcd ant" | awk '{for (i=1;i<=NF;i++) if (length($i)==3){sub(/[aA][a-z]{2}/,toupper($i),$i)};print}'
你可以像这样使用 Sed 做到这一点:
echo 'Ass ass ant Ant' | sed -re 's/\ba[a-z]{2}\b/\U&/gI'
(使用您的示例字符串)
perl -pe '$_=~s/\b([aA][a-z]{2})\b/\U$1/g;' your_file
测试:
> echo "Abc ab Ab" | perl -pe '$_=~s/\b([aA][a-z]{2})\b/\U$1/g;'
ABC ab Ab
>
取自这里 这是 awk 版本:
awk '{for(i=1;i<=NF;i++)
if((length($i)==3) && $i~/[aA][a-zA-Z][a-zA-Z]/)
$i=toupper($i)
}1' your_file