如何对同一个文件执行两个 grep 命令?

如何对同一个文件执行两个 grep 命令?

我有一个文件。我想选择不以斜杠开头www.且不包含斜杠的行。我想将结果输出到result.txt

为了实现第一个要求:

grep -v '^www\.' myfile.txt > result.txt

为了实现第二个目标,我将获取 result.txt 并执行:

grep -v '/' result.txt > result2.txt

是否有更好的快捷方式可以在文件上执行多个命令并将结果存储到一个输出文件中:result.txt

我知道|要执行多个命令,其中左侧命令的输出|是右侧命令的输入|。我不知道的是,如果使用 grep 或任何其他命令,我是否应该在|.换句话说,应该是:

grep -v '^www\.' myfile.txt | grep -v '/' > result.txt

或者

grep -v '^www\.' myfile.txt | grep -v '/' mfile.txt > result.txt

答案1

grep -v -e '^www\.' -e '/' myfile.txt > result.txt

答案2

不用担心使用管道。亚历山大的答案是最好和最纯粹的,但如果我首先寻找最好的公式,我会使用一些步骤:

  1. head file |grep 'first-condition' |grep 'next-conditon':: 为您提供概览
  2. cat file |grep 'first-condition' |grep 'next-conditon' |wc -l:: 给出金额
  3. grep --color 'complex-condition':: 突出真实的选择

在最后一步中,您可以创建一个非常复杂的正则表达式,例如:

egrep -v '(^www\.)|(/)' myfile.txt > result.txt

有时需要使用其他字符串分析命令等,awk使用管道就非常有用。sedcut

相关内容