我在作业中使用grep
命令苦苦挣扎。
我需要在文档中找到以“a”开头的每个单词,然后让单词计数确定多少单词。由于某些单词以大字母开头,我已经完成tr 'A-Z' 'a-z'
。我可以轻松地grep
找到文档中的所有'a'字母以及以'a'开头的行。但由于某种原因,我无法用'a'开头的那些grep单词。
希望你能帮助我。
THX每个人都帮了我很多次
很难理解Linux IMO,但最终我会到达那里。
再次感谢所有帮助。
答案 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+"