Text-Processing
在文件中查找一個字元串,然後用 bash 查找上麵包含另一個字元串的第一行
如何在文件中找到一個字元串,然後找到包含它之前的“srv”的行的第一個實例。
我一直在研究Tac 和sed,但未能使其正常工作。
要搜尋的輸出文件看起來像
srv-test-1 | SUCCESS | rc=0 >> a1 A3 srv-test-2 | SUCCESS | rc=0 >> a1 b1 b2 B3 B4
程式碼提示使用者輸入他們正在查找的字元串並將其儲存到變數中。
我可以使用找到使用者請求
tac file | grep $requested
如果使用者請求 b1,我希望它返回
b1 found on srv-test-2
同樣,如果請求 a1 它會返回
a1 found on srv-test-1 a1 found on srv-test-2
如果您要搜尋多個項目,您可以將整個文件轉換為可 grep 的條目列表。
awk '/^srv/ { c = $1 ; next } { print $0 " found on " c }'
在輸入文件上會給你
a1 found on srv-test-1 A3 found on srv-test-1 a1 found on srv-test-2 b1 found on srv-test-2 b2 found on srv-test-2 B3 found on srv-test-2 B4 found on srv-test-2
然後搜尋單個項目,您可以過濾以前的輸出
awk '/^srv/ { c = $1 ; next } { print $0 " found on " c }' | grep '^a1'
給予
a1 found on srv-test-1 a1 found on srv-test-2