【问题标题】:How to filter words that contain repeated character?如何过滤包含重复字符的单词?
【发布时间】:2020-02-18 00:18:39
【问题描述】:

我一直在做这个看起来很简单的任务,但是尽管阅读了这个人并在谷歌上搜索了类似的问题,但我还是无法完成。

我有一个包含数千个单词的文件,我需要过滤以“st”结尾的单词,同时不包含“s”或“t”的另一个重复,例如:

霜很好。

吐司不是。

我可以使用以下命令过滤具有所需结尾的单词:

grep -e '[s][t]$' .\file

我不能做的是过滤包含“s”或“t”重复的单词。

我试过了:

grep -E 's{0}'

或反向搜索

egrep -v '(s)\1{0}' .\file

*有了这个,我只能得到根本不包含S的单词。

egrep -v '(s)\1{1}' .\file

* 这个没有任何作用,因为我得到的单词都是重复 's' 字符。

任何人都知道我如何将grep -e '[s][t]$' .\file 命令通过管道传递到另一个正则表达式中,该表达式将过滤掉包含“t”或“s”重复的单词?

谢谢。

【问题讨论】:

  • grep '^[^st]*st$' file?这将匹配没有st 但末尾有st 的行。
  • 虽然这个命令可以解决问题,但它不只是过滤掉以字符 's' 或 't' 开头而以 'st' 结尾的单词吗?我需要过滤掉中间可能包含重复“s”或“t”的单词,或者简单地说,单词中的重复。
  • '^[^st]*st$' 将匹配像 abcst 这样的行,并且不会返回像 asbcdatast 这样的行

标签: file grep repeat


【解决方案1】:

你可以使用

grep '^[^st]*st$' file

这将返回匹配的行

  • ^ - 字符串开头
  • [^st]* - 除了 st 之外的 0 个或多个字符
  • st - st 子字符串
  • $ - 在字符串的末尾。

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 1970-01-01
    • 2013-01-27
    • 2021-01-10
    • 2022-11-28
    • 2019-05-11
    • 1970-01-01
    • 2019-06-16
    • 2019-09-24
    相关资源
    最近更新 更多