我正在尝试使用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"两条线路。第一个条件是,从"DST 3 && DST 5"中的所有"RX VIDEO"中获取数据。
发布于 2013-01-30 07:46:52
对于多个条件,您可以将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这将与DST 3或DST 5一起搜索RX VIDEO。
编辑:我在表达式末尾添加了一个单词来抑制,例如DST 37 beeing。请参阅Keith的评论。
https://stackoverflow.com/questions/14594188
复制相似问题