0

シェル スクリプトを使用してファイル内のデータを取得する方法について質問があります。複数の条件でいくつかの行を検索したい。

たとえば、次のファイルがあるとします。

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

複数の条件について、greps の出力を別の grep にパイプできます。

AAA と BBB を含む行をファイルで検索する場合は、次のようにします。

grep 'AAA' file | grep 'BBB'

または、grep を 1 つだけ使用して正規表現で検索することもできます。

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 に答える