0

我有一个关于使用 shell 脚本在文件中获取数据的问题。我想在具有多个条件的某些行中进行搜索。

例如,如果我有这个文件:

TX VIDEO ID 34 B 33 SIZE 672 SRC -1 DST 11 T 0.1 1
TX CBR ID 35 B 35 SIZE 10 SRC -1 DST 11 T 0.1 1
RX VOIP ID 0 B 0 SIZE 32 SRC -1 DST 3 D 0.001 0
RX VOIP ID 8 B 8 SIZE 32 SRC -1 DST 5 D 0.001 1
RX VOIP ID 20 B 20 SIZE 32 SRC -1 DST 8 D 0.001 1
RX VIDEO ID 9 B 9 SIZE 1490 SRC -1 DST 5 D 0.002 1
RX VIDEO ID 21 B 21 SIZE 1490 SRC -1 DST 8 D 0.002 1
TX INF_BUF ID 37 B 10 SIZE 776 SRC 1 DST 5 T 0.102 1
TX INF_BUF ID 39 B 22 SIZE 776 SRC 2 DST 8 T 0.102 1

在这个文件中,我有每一行"RX VIDEO""TX VIDEO"行。我要从中获取数据的第一个条件"RX VIDEO""DST 3 && DST 5".

4

2 回答 2

0

对于多个条件,您可以将 grep 输出通过管道传输到另一个 grep。

如果要在文件中搜索带有 AAA 和 BBB 的行,可以执行以下操作:

grep 'AAA' file | grep 'BBB'

或者你可以用正则表达式搜索它,只用一个 grep:

grep -e 'AAA.*BBB' -e 'BBB.*AAA' file

-e如果匹配任何选项后的表达式,您将得到一个结果。这意味着它的行为类似于or

这两个示例都会找到类似这样的行:

AAABBB
AAA BBB
BBB AAA
BBBAAA
AAA-BBB
AAA---BBB
AAAA BBB
xAAAAAAA BBB AAAAA

等等。

对于您的示例,它可能是:

grep 'RX VIDEO' file | grep -e 'DST 3' -e 'DST 5'

这将与或RX VIDEO一起搜索。DST 3DST 5

于 2013-01-29T23:33:32.610 回答
0

我假设你想要的行RX VIDEO也包含DST 3DST 5

$ grep 'RX VIDEO.*DST [35]' a.txt
RX VIDEO ID 9 B 9 SIZE 1490 SRC -1 DST 5 D 0.002 1

参考

于 2013-01-29T23:31:31.443 回答