【问题标题】:egrep to print output on the same lineegrep 在同一行打印输出
【发布时间】:2020-08-04 08:31:58
【问题描述】:

我正在运行一个命令并使用 egrep 过滤掉多个单词,但输出显示在多行中,有没有一种方法可以让我在单行中使用特定的匹配单词集获得输出。

egrep -n "name|recovery"

当前输出为

6:    "name": "7660",
27:      "recovery": "2020-08-04",
40:    "name": "7667708",
61:      "recovery": "2020-08-03",
74:    "name": "7660271",
95:      "recovery": "2020-08-02",

需要的输出

1:    "name": "7660", "recovery": "2020-08-04"
2:    "name": "7667708", recovery": "2020-08-03"
3:    "name": "7660271", "recovery": "2020-08-02"

【问题讨论】:

  • 您可以添加显示当前输出的示例输入吗?这样您可能会使用awk 获得更简单的答案,而不是尝试使用其他工具处理当前输出

标签: shell grep


【解决方案1】:

您可以通过管道传输多个命令来实现这一点。

<<your command>> | cut -d: -f2- | sed '{N;s/,\n/,/;}' | grep -n '^'

【讨论】:

    【解决方案2】:

    由于您的结果的模式是每隔一行,一个简单的解决方案是使用paste 命令。例如:

    egrep -n "name|recovery" | paste - - 
    

    默认情况下,输出由制表符分隔。当使用egrep -o 在同一行源文本上具有多个匹配项时,该技术也很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-06
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2014-08-11
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多