linux - bash 文件中的单词列表

标签 linux bash unix

我想做Unix脚本,打印一个uniq单词列表形成文件并打印该单词出现的行数列表。

对于示例文件.txt

Lorem 
ipsum dolor elit,
Lorem elit.

输出

Lorem 1,3
ipsum 2
dolor 2
elit 2,3

我的代码:

cat file.txt | tr '[:space:]' '[\n*]'| tr '[:digit:]' '[\n*]'| tr '[:punct:]' '[\n*]' | grep -v "^\s*$" | sort -f | uniq 

我不知道该怎么做...有人可以帮助我吗?

最佳答案

此 awk 代码适用于您的示例:

awk '{for(i=1;i<=NF;i++){
        gsub(/[.,:;]/,"",$i)
        a[$i]=($i in a)?a[$i]","NR:NR}}
     END{for(x in a)print x,a[x]}' file

关于linux - bash 文件中的单词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955781/

相关文章:

regex - Sed 在特定模式后替换

c - 如何在 C 中测试 CLONE_VM、CLONE_FS 和 CLONE_IO 的效果?

c - 在 C 中覆盖 _init 函数,它有多安全?

ruby - 为什么在重定向时,Ruby 的 STDERR 输出先于 STDOUT 输出?

php - 从 PHP exec() 函数读取 git push 的输出

regex - 如何修复正则表达式以匹配整个单词,而不是子字符串?

linux - 如何检测系统是否在 UNIX shell 脚本中启用了 IPv6?

linux - 通过正则表达式过滤每行 linux bash 输出

linux systemctl 由于权限问题无法启动elasticsearch systemd服务

c - 为什么 Linux 在目录上使用 getdents() 而不是 read()?