[英]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.