组合 grep 标志

Combining grep flags

我正在尝试查找以 'query' 或以下符号开头的行:“>”,但我不知道该怎么做。

如果这是数据集:

query=345
query=4565
brink=980
>ehlhdhdk
>blonk

我只想保留第 1、2、4 和 5 行。 我试过了:grep -e 'query=' filename.txt||grep -F '>' filename.txt > newfile.txt

和: cat filename.txt | grep -e 'query='||grep -F '>' > newfile.txt。 但是这些不起作用,它们不输出 newfile.txt 而只是输出到终端。

您可以使用

grep -E '^(query|>)' filename.txt > newfile.txt

详情

  • ^ - 字符串开头
  • (query|>) - 匹配的捕获组
    • query - query
    • | - 或
    • > - 一个 > 字符。

参见online demo

#!/bin/bash
s='query=345
query=4565
brink=980
>ehlhdhdk
>blonk'
grep -E '^(query|>)' <<< "$s"

输出:

query=345
query=4565
>ehlhdhdk
>blonk

使用多个模式和选项 -e:

grep -e '^>' -e '^query' file

输出:

query=345
query=4565
>ehlhdhdk
>blonk