0

複数の条件でいくつかの行を検索することにより、シェルスクリプトを使用してテキストファイルからデータを取得しようとしています。たとえば、このファイルでは次のようになります。

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"です。

4

1 に答える 1

1

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

AAAとBBBの行をファイルで検索する場合は、次の操作を実行できます。

grep 'AAA' file | grep 'BBB'

または、1つの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 VIDEOこれは、またはと一緒に検索しDST 3ますDST 5

編集:たとえば、DST 37の蜂が見つかった場合を抑制するために、式の最後に単語を追加しました。キースのコメントを参照してください。

于 2013-01-29T23:46:51.820 に答える