我有我的正则表达式,找到以“a”开头的3个字母的单词...
\b[aA][a-z]{2}\b
(根据这个似乎有效!检查出来:http://rubular.com/r/Jil0E4WZnW)
现在我需要知道如何获取该结果,并用大写的三个字母单词替换小写单词。
谢谢!
答案 0 :(得分:0)
在awk中调用toupper函数:
echo "Abc" | awk '{print toupper($0)}'
得到你:
ABC
答案 1 :(得分:0)
您可以使用PERL的uc($string);
命令。
答案 2 :(得分:0)
您可以使用Sed这样做:
echo 'Ass ass ant Ant' | sed -re 's/\ba[a-z]{2}\b/\U&/gI'
(使用您的示例字符串)
答案 3 :(得分:0)
另一种方法是使用tr
:
echo "Abc" | tr 'a-z' 'A-Z'
答案 4 :(得分:0)
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
>
取自here 这是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
答案 5 :(得分:0)
这个解决方案“欺骗”,因为它使用循环和子而不是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}'