同一行上有多个grep关键字?

时间:2012-09-11 16:38:13

标签: batch-file grep

我在同一行使用grep命令3次

ls -1F ./ | grep / | grep -v 0_*.* | grep -v undesired_result

有没有办法将它们组合成一个命令而不是让它管道3次?

1 个答案:

答案 0 :(得分:0)

在一个命令行中无法同时进行肯定搜索(grep <something>)和否定搜索(grep -v <something>),但如果grep支持-E(或者,egrep),您可以ls -1F ./ | grep / | grep -E -v '0_*.*|undesired_result'将子流程计数减少一个。要超越这个范围,你必须想出一个特定的正则表达式,它可以完全匹配你想要的东西或者你不想要的东西。

实际上,如果你有egrep,我猜第一句话并不完全正确,但建立正确包含正面和负面部分的正确正则表达式并涵盖部分的所有可能排序可能更多令人沮丧但不值得...