我必须在grep的帮助下找出任何字符后跟句点(。)的频率。在找到字符跟随句点的次数之后,我必须按升序对结果进行排序。
例如在这个字符串中:"找到我的输入。应该获得输出。你需要找到输出。"
输出应该是这样的:
d 1
t 2
到目前为止我做了什么:
cat filename | grep -o "*." | sort -u
但它没有按预期工作。
任何想法如何解决这个问题?我必须在.txt文件中的大型书籍库上执行此操作。
答案 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 .