【问题标题】:bash shell script for mac to generate word list from a file?用于mac的bash shell脚本从文件生成单词列表?
【发布时间】:2012-04-30 15:30:38
【问题描述】:

是否有在 Mac 上运行的 shell 脚本从文本文件生成单词列表,列出唯一的单词?如果能按频率排序就更好了……

抱歉忘了提,是的,我更喜欢 bash,因为我现在正在使用 mac...

哦,我的文件是法语的...(基本上我正在阅读一本小说并学习法语,所以我尝试生成一个单词列表来帮助自己)。希望这不是问题?

【问题讨论】:

  • 你试过的脚本是什么
  • 什么环境?视窗? Linux/Mac/Unix?
  • @Matt 这只是排序和唯一。它不会从文件中提取单词

标签: macos bash shell


【解决方案1】:

如果我理解正确,你需要这样的东西:

cat <filename> | sed -e 's/ /\n/g' | sort | uniq -c

【讨论】:

  • 您可能可以深入研究sed 的正则表达式文档以使脚本更加全面,但我就是这样做的,除非您必须进行黑客操作才能真正获得换行符,啦stackoverflow.com/a/7567839/4203
  • @athos 查看我的评论。这是因为您在 Mac 上(我也是),而且我很确定 Mac 不提供 GNU sed(它基于 BSD)。
  • @athos 这很容易解决。事实上,如果你混合匹配已经发布的两个答案(使用tr 而不是sed),你会得到$ cat $YOUR_FILE | tr ' ' '\n' | sort | uniq -c,我认为这正是你想要的。
【解决方案2】:

这个命令会做

cat file.txt |  tr "\"' " '\n' | sort -u

这里的sort -u 不能在 Macintosh 机器上工作。在这种情况下,请改用sort | uniq -c。 (感谢Hank Gay

cat file.txt |  tr "\"' " '\n' | sort | uniq -c 

【讨论】:

  • 我认为sort | uniq -c 是完成它的更好选择,因为sort -u(在 Mac 上)不会显示单词,只会显示计数。
  • 它有效!但需要一些修改... 1. 没有字数 2. 不直接写入输出文件 3. 不仅需要替换 ( ) 还需要替换 ('),但谢谢这是要走的路!
  • 如何用新行替换双引号和单引号?
  • 谢谢你们。我使用了一种稍微不同的方式: tr -cs "[:alpha:]" "\n"
  • @HankGay:什么版本的 Mac OS X?在我的机器(OS 10.7.4)上,/usr/bin/sort 来自 GNU coreutils 5.93,-u 生成单词,而不是计数。
【解决方案3】:

只要回答我的问题,就可以点下我正在使用的最终版本:

tr -cs "[:alpha:]" "\n" < FileIn.txt | sort | uniq -c | awk '{print $2","$1}' >> FileOut.csv

一些注意事项:

  • tr 可以直接用来做替换。
  • 因为我有兴趣为我的法语词汇创建一个单词列表,所以我使用了 [:alpha:]
  • awk用来插入逗号,这样输出就是csv文件,方便我上传...

再次感谢大家帮助我。

抱歉,我一开始没有明确说明我使用的是 mac 并期望使用 bash 脚本。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多