组合 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
我正在尝试查找以 '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