首页 > 解决方案 > 结合 grep 标志

问题描述

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

如果这是数据集:

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,而是只输出到终端。

标签: grepflags

解决方案


您可以使用

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

细节

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

查看在线演示

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

输出:

query=345
query=4565
>ehlhdhdk
>blonk

推荐阅读