簡體   English   中英

如何同時grep多行(從另一個命令輸出)?

[英]How do I grep multiple lines (output from another command) at the same time?

我有一個在后台運行的Linux驅動程序,它能夠返回當前的系統數據/統計信息。 我通過在控制台中運行控制台實用程序(讓我們稱之為dump-data )來查看數據。 所有數據都甩我每次運行dump數據的時間。 該實用程序的輸出如下所示

Output:
- A=reading1
- B=reading2
- C=reading3
- D=reading4
- E=reading5
...
- variableX=readingX
...

該實用程序返回的讀數列表可能非常長。 根據情況,某些讀數將是有用的,而其他一切都是無用的。

我需要一種方法來只查找名稱可能沒有任何共同點的有用讀數(通過bash腳本)。 即有時我需要收集A,D,E; 有時候我需要C,D,E。

我試圖隨着時間的推移繪制讀數以尋找趨勢,所以我不能運行這樣的事情:

# forgive my pseudocode
Loop
    dump-data | grep A
    dump-data | grep D
    dump-data | grep E
End Loop

收集A,D,E,因為這實際上會給我3個單獨的轉儲數據調用的讀數,因為這是不准確的。

如果要將grep的所有結果保存在同一個文件中,可以將所有表達式合並為一個:

grep -E 'expr1|expr2|expr3'

但是如果你想在單獨的文件中得到結果(對於expr1,expr2和expr3),事情會變得更有趣。

您可以使用tee >(command)執行此操作。

例如,在這里我用不同的命令處理相同的管道:

$ echo abc | tee >(sed s/a/_a_/ > file1) | tee >(sed s/b/_b_/ > file2) | sed s/c/_c_/ > file3
$ grep "" file[123]
file1:_a_bc
file2:a_b_c
file3:ab_c_

但這個命令看起來太復雜了。

我最好將dump-data結果保存到文件然后grep它。

TEMP=$(mktemp /tmp/dump-data-XXXXXXXX)
dump-data > ${TEMP}
grep A ${TEMP}
grep B ${TEMP}
grep C ${TEMP}

您可以使用dump-data | grep -E "A|D|E" dump-data | grep -E "A|D|E" 注意grep的-E選項。 或者,您可以使用沒有-E選項的egrep

你可以簡單地使用:

dump-data | grep -E 'A|D|E'
awk '/MY PATTERN/{print > "matches-"FILENAME;}' myfile{1,3}

堆棧交換中的 大師

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM