【问题标题】:grep for a specific pattern anywhere in the filegrep 查找文件中任何位置的特定模式
【发布时间】:2015-05-17 18:00:08
【问题描述】:

是否可以 grep 查找文件中的任何实例,其中 ;是不是由任何其他字符前置和后继?

 ;

问题是它并不一定意味着左右必须有一个空间,但也意味着;可能是一行中的唯一字符。 我可以以某种方式检查是否有多个 ;文件中的每一行? 我将如何使用 grep 来做到这一点?

【问题讨论】:

  • 请学习包含一小组样本数据、该数据的预期输出和尝试解决问题的代码,以及任何错误消息和您对为什么它不起作用的想法。祝你好运。

标签: bash sed pipe


【解决方案1】:

这显示一个有两个;在一行中:

$ grep -E '.*;.*;.*'

这将显示一个 ;是一行中唯一的东西,除了空格:

$ grep -E '^ *; *$'

grep -E 告诉它使用扩展的正则表达式语法(egrep 意味着同样的事情顺便说一句),然后它的其余部分只是一个正则表达式。 .* 匹配任意数量的任何东西,零个或多个任意字符。所以第一个有两个;在它们之间、之前或之后有任意数量的任何东西。

第二个匹配^是行首,$是行尾,然后是;前后任意数量的空格。

【讨论】:

  • 我也刚刚注意到上面的sed 标签。正则表达式的相同语法也应该在 sed 中工作。
  • 我怎么会在一行中找到除 ;但模式是 ashkdshfks ; fjgkdf 所以空间;空间?
  • 另一个问题是当你寻找两个时;在一条线上,那么问题是它们不必彼此相邻..它们可以在线上的任何位置...
  • 我不确定你在问什么……你能再举几个例子吗?也试试我放在那里的两条线,稍微调整一下,看看它与你需要的有多接近。
猜你喜欢
  • 2012-07-24
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多