Shell脚本条件

时间:2013-01-29 23:44:22

标签: sql-server-2008 shell

我试图通过使用shell脚本从文本文件中获取数据,通过在一些行中搜索多个条件。例如,在此文件中:

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

我有"RX VIDEO""TX VIDEO"行。第一个条件是,从"RX VIDEO"中的所有"DST 3 && DST 5"获取数据。

1 个答案:

答案 0 :(得分:1)

对于多个条件,您可以将greps输出传递给另一个grep。

如果您想在文件中搜索AAA和BBB的行,您可以这样做:

grep 'AAA' file | grep 'BBB'

或者您可以使用只有一个grep的正则表达式搜索它:

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

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

两个例子都会找到这样的行:

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\>'

或者:

grep 'RX VIDEO.*DST [35]\>' file

这将与RX VIDEODST 3一起搜索DST 5

编辑:我在表达式的末尾添加了一个单词以压缩,例如DST 37 beeing。见基思的评论。