繁体   English   中英

Linux grep命令以?开头的单词 字符

[英]Linux grep command for words beginning with ? character

我在分配中的grep命令方面有些挣扎。

我需要找到文档中所有以“ a”开头的单词,然后让单词数确定有多少个单词。 由于有些单词以大写字母开头,所以我做了tr 'AZ' 'a-z' 我可以很容易地得到grep来找到文档中的所有“ a”字母,以及以“ a”开头的行。 但是由于某种原因,我无法获得以'a'开头的grep单词。

希望您能够帮助我。


THX,这对我有很大帮助

很难理解Linux IMO,但最终我会到达那里。

再次感谢所有帮助,不胜感激。

你应该能够做

grep -Eow "[Aa]\w+" | wc -l

它说找到所有单词( -w与一个“A”开头的() [Aa]随后是1个或多个单词字符( \\w+ )。

-o选项仅打印匹配的输出。

echo " Aest test aest test" | grep -Eow "[Aa]\w+" | wc -l  # returns 2

如果您使用的是GNU awk,则将记录分隔符更改为任何空格(以便每个单词成为一条记录)并保持计数:

awk -v RS='\\s+' '/^[Aa]/ { ++count } END { print count + 0 }' file

如果没有匹配项,则+ 0只会使输出更清晰(输出0而不是空字符串)。 if (NR) print count + 0那么更正确的选择是,没有输入=>没有输出,但是您可能会考虑过大。

在其他版本的awk上,您可以手动循环遍历该行上的每个单词:

awk '{ for (i = 1; i <= NF; ++i) if ($i ~ /^[Aa]/) ++count } END { print count + 0 }' file

在马丁斯脚本中添加计数选项。

grep -Eowc "[Aa]\w+"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM