如何在 unix/linux 中创建 shell 脚本来查找文本文件中包含 5 到 10 个字符长且以大写字母开头的单词的行数?
答案1
假设原来的问题是为了数数符合上述要求的行数,那么应该这样做:
grep -e '\<[[:upper:]][[:alpha:]]\{4,9\}\>' file|wc -l
假设这意味着打印匹配的行号:
awk --re-interval '{line = line + 1} /\<[[:upper:]][[:alpha:]]{4,9}\>/ {print line}' file
答案2
egrep "^[A-Z]" FILE | egrep -c "\b[A-Za-z]{5,10}\b"
现在的问题是,过滤掉以大写字母开头的行(就像这一行)[该行必须以大写字母开头 - 而不是单词],并包含一个单词(不一定是第一个单词) ),长度为 5 到 10 个字符。
是的,读完原题后,有 4 种可能的解释: 起始词必须满足两个要求,或者它是起始词和另一个词,以及: 获取行号,或行数。
要打印以大写字母开头并包含长度为 5-10 的单词的行的行号,我们使用 sed:
sed -nr '/^[A-Z][a-z]{4,9}/=;/^[A-Z].*\b[A-Za-z]{5,10}\b/=' FILE