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

时间:2016-01-12 14:48:20

标签: regex linux bash grep

我在作业中使用grep命令苦苦挣扎。

我需要在文档中找到以“a”开头的每个单词,然后让单词计数确定多少单词。由于某些单词以大字母开头,我已经完成tr 'A-Z' 'a-z'。我可以轻松地grep找到文档中的所有'a'字母以及以'a'开头的行。但由于某种原因,我无法用'a'开头的那些grep单词。

希望你能帮助我。

THX每个人都帮了我很多次

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

再次感谢所有帮助。

3 个答案:

答案 0 :(得分:1)

你应该能够做到

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

其中说找到以“a”(-w)开头且后跟一个或多个单词字符([Aa])的所有单词(\w+)。

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

实施例

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

答案 1 :(得分:1)

如果你正在使用GNU awk,那么将记录分隔符更改为任何空格(因此每个单词都成为记录)并保持计数:

let sortedArray = (itemsArray as NSArray).sortedArray(using: [NSSortDescriptor(key: "itemName", ascending: true)]) as! [[String:AnyObject]]

awk -v RS='\\s+' '/^[Aa]/ { ++count } END { print count + 0 }' file 只是在没有匹配的情况下使输出更清晰(它打印+ 0,而不是空字符串)。更正确的是0所以没有输入=>没有输出,但你可能会考虑而不是过度杀伤。

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

if (NR) print count + 0

答案 2 :(得分:0)

向Martins脚本添加计数选项。

grep -Eowc "[Aa]\w+"