【问题标题】:Display whole word from line从行显示整个单词
【发布时间】:2015-07-16 14:26:34
【问题描述】:

我想只显示唯一的单词作为输出。如何定义grep表达式?

strings file.txt |grep (filter to display only whole words) | unique

【问题讨论】:

  • 你能展示一些你的file.txt的示例数据吗?否则我们无法提供正确答案。
  • strings 命令将提取所有字符串 char,我将结果传送到 grep 命令,我想只获取整个单词的结果[也就是说,如果一行包含更多空格,则单词之间空间应显示]。文本文件太大,无法分享。希望它解释..!
  • 请粘贴一些数据。例如。 foo bar blahfoo, blah, bar!foo! bar. blah! 是不同的。而且您的问题不仅在 grep 部分,uniq 仅适用于已排序的文件。所以,再次粘贴输入数据示例,以及预期的输出!
  • 请参考我之前的评论以获取示例输入和预期输出。

标签: linux string grep command-line-interface unique


【解决方案1】:

听起来你需要将“空白”翻译成换行符:

strings file.txt | tr '[:blank:]' '\n' | sort -u

【讨论】:

  • 是的,我需要将空格或制表符转换为换行符。我试过你的命令。但它仍然在某些输出行中显示空格
【解决方案2】:

这应该可行:

s="sample word sample word samples"
echo "$s" |grep -oE "\b\w+\b"|sort -u

输出:

sample
samples
word

【讨论】:

  • 谢谢。这是我所期待的。我们如何在python中使用相同的方法?
  • @jOSe 喜欢用 subprocess 或 os.system() 运行这段代码吗?
【解决方案3】:
cat file.txt | sed -e 's/\s\+/\n/g' | sort -u

【讨论】:

  • cat 也不会显示字符串字符。我目前只对字符串感兴趣。所以我用字符串命令替换了你的猫。 sed 显示带空格的行。如果它有空间并展示到整个世界,我需要打破界限。示例行“Hello world, basic” - 预期结果:Hello, world,, basic
  • 无用的cat
猜你喜欢
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
相关资源
最近更新 更多