grep命令可以找出跟随任何字符的次数。'

时间:2017-10-22 16:51:23

标签: regex bash sorting unix grep

我必须在grep的帮助下找出任何字符后跟句点(。)的频率。在找到字符跟随句点的次数之后,我必须按升序对结果进行排序。

例如在这个字符串中:"找到我的输入。应该获得输出。你需要找到输出。"

输出应该是这样的:

d 1 
t 2

到目前为止我做了什么:

cat filename | grep -o "*." | sort -u 

但它没有按预期工作。

任何想法如何解决这个问题?我必须在.txt文件中的大型书籍库上执行此操作。

3 个答案:

答案 0 :(得分:4)

使用GNU grep的迭代方法:

grep -o '.\.' filename | sort | uniq -c

输出:

          1 d.
          2 t.
grep -Po '.(?=\.)' filename | sort | uniq -c

输出:

          1 d
          2 t
grep -Po '.(?=\.)' filename | sort | uniq -c | awk '{print $2,$1}'

输出:

d 1
t 2

答案 1 :(得分:0)

使用单个GNU awk 进程:

Fatal error: Uncaught Google\Cloud\Core\Exception\BadRequestException: { "error": { "code": 400, "message": "The language ar is not supported for syntax analysis.", "status": "INVALID_ARGUMENT" } }

输出:

awk -v FPAT='.[.]' 'BEGIN{ PROCINFO["sorted_in"]="@ind_str_asc" }
       { for(i=1;i<=NF;i++) a[substr($i,1,1)]++ }
       END{ for(i in a) print i,a[i] }' filename

答案 2 :(得分:0)

这个也可以

echo "Find my input. Output should be obtained. You need to find output."| grep -o ".\." | sort | uniq -c | rev | tr -d .