grep/sed/awk 또는 regex/linux 명령을 사용하여 파일에서 일부 정보를 추출합니다.

grep/sed/awk 또는 regex/linux 명령을 사용하여 파일에서 일부 정보를 추출합니다.

이 출력이 포함된 파일이 있고 내 파일에서 유용한 데이터를 수집하려고 합니다.

R1#show ip route 192.168.5.130
Routing Descriptor Blocks:

  * 192.168.5.128, from 192.168.5.162, 00:20:16 ago, via Serial0/0/0.2

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit/sec

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

위의 단락에 "metric"이라는 단어가 있으면 일치 항목을 찾고 싶습니다. 그러면 해당 줄뿐만 아니라 전체 단락이 표시되어야 합니다.

조건을 확인하는 방법도 있습니다. metric==2172416인 경우 전체 단락을 반환합니다.

다양한 시나리오에 적용할 것이기 때문에 가장 간단한 방법을 알고 싶습니다.

또한 내 파일에 이 내용이 있는 경우 4월 11일의 행만 가져올 수 있는 방법은 무엇입니까? 여기서 와일드카드를 사용할 수 있나요?

CPU0:Apr 11 05:22:04.768 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG : 

CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG : 

CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

CPU0:Apr 11 06:09:56.707 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG : 

답변1

awk '/Route metric is 2172416/,/Loading/' file.txt

위 명령은 다음의 행을 인쇄합니다.경로 측정항목은 2172416입니다.그리고로드 중철사

awk '/Apr 11/' second_file.txt
grep 'Apr 11' second_file.txt

위의 명령은 다음과 같은 파일을 인쇄합니다.4월 11일. grep을 사용할 수도 있습니다.

답변2

첫 번째 파일의 데이터가 빈 줄을 사용하여 표시된 것과 정확히 같다고 가정하면 GNU grep(또는 다른 것)를 사용하고 주변 컨텍스트를 요청할 수 있습니다.

grep -B 5 -A 6 -F 'Route metric is 2172416' file

그러면 일치 전 5줄의 컨텍스트, 일치 후 6줄의 컨텍스트 및 고정 문자열이 포함된 줄이 반환됩니다 Route metric is 2172416.

언급된 모든 행을 얻으려면 다음을 수행하십시오 Apr 11.

grep -F 'Apr 11' file

또는 좀 더 구체적인 일치 기준이 필요한 경우

grep '^CPU0:Apr 11' file

...이를 위해서는 주어진 패턴이 줄의 시작 부분과 일치해야 합니다.

관련 정보