예를 들어 다음과 일치시키고 싶습니다.
끈e1000g0~에서lltconfig -a 목록 를 입력한 다음 e1000g0 문자열 뒤에 두 줄을 표시합니다.
그래서 나는 다음 줄만 얻습니다.
Node 0 du1a : 00:21:28:14:76:68
Node 1 du1b : 00:21:28:59:72:C4 permanent
그 후에 두 행만 얻는 방법을 제안해 주세요.
( lltconfig -a list )의 전체 예:
lltconfig -a list
Link 0 (e1000g0):
Node 0 du1a : 00:21:28:14:76:68
Node 1 du1b : 00:21:28:59:72:C4 permanent
Link 1 (e1000g1):
Node 0 du1a : 00:21:28:14:76:69
Node 1 du1b : 00:21:28:59:72:C5 permanent
Link21 (e1000g2):
Node 0 du1a : 00:21:28:14:76:49
Node 1 du1b : 00:21:28:59:72:A5 permanent
나는 또한 이것을 시도했습니다 (그러나 그것은 솔라리스가 아닌 Linux에서만 작동합니다 -:(
lltconfig -a list | grep -A 4 "e1000g0" | grep -v "e1000g0"
grep: illegal option -- A
Usage: grep -hblcnsviw pattern file . . .
답변1
Solaris 11에는 -A 또는 -B를 사용하여 컨텍스트 줄을 제공할 수 있는 GNU egrep이 있습니다.
또는 GNU grep/egrep이 없는 경우 스크립트는 다음 cgrep
위치에 있습니다.http://www.intuitive.com/wicked/showscript.cgi?036-cgrep.sh유사한 기능을 갖춘 컨텍스트 grep을 제공합니다.
답변2
이 시도:
var='Link 0'
lltconfig -a list |
awk '/'"$var"'/{l=1;next} /(^$)/{l=0} l==1 {print}'
좀 더 일반적인 것을 원한다면:
grep="pattern" # the string where we begin
max=4 # the number of lines after the matched pattern
awk '/'"$grep"'/{l=1;count=NR;next} l>0 && NR-count < '"$max"+1' {print}'
(테스트 대상 Solaris11
)
답변3
lltconfig -a list | awk 'BEGIN{n=0}/e1000g0/{n=NR}n&&NR>n&&NR<n+3{print}'