【问题标题】:How do I change the order in which grep looks at files/prints results?如何更改 grep 查看文件/打印结果的顺序?
【发布时间】:2013-06-14 02:32:34
【问题描述】:

我有一个目录,里面有一堆带有数字文件名的文件。它们没有前导零,所以如果我在该目录中执行grep hello * 之类的操作,我可能会得到如下信息:

22:hello, world!
6:hello
62:"Say hello to them for me."

我宁愿结果是这样的:

6:hello
22:hello, world!
62:"Say hello to them for me."

我的第一个想法是使用grep hello * | sort -n 对结果进行数字排序,但后来我失去了 grep 的颜色,我想保留这些颜色。最好的方法是什么?

【问题讨论】:

    标签: linux bash grep gnu


    【解决方案1】:
    ls * | sort -n | xargs -d '\n' grep hello
    

    【讨论】:

    • 谢谢!那么 xargs 命令所做的就是接受标准输入,用换行符分割它,然后将结果作为参数附加到“grep hello”,然后呢?
    • @pandubear 是的,完全正确。再好不过了。
    • 您还可以在grep 中添加-H 选项以打印每个匹配项的文件名(与grep -R 具有相同的输出)
    • @ShichengGuo 你能把它作为一个新问题发布吗?
    【解决方案2】:

    啊——grep 在其输出为管道时会抑制其颜色(这可能是件好事)。但这可以通过提供--color=always 来覆盖,这使得| sort -n 方法起作用:

    grep --color=always hello * | sort -n
    

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多