2016-07-26 1 views
0

이것은 내 파일입니다. 이 파일에서 특정 문자열 검색 및 특정 문자열 사이의 인쇄 - Linux 쉘 스크립트

'#### 
OutOfmemory is the error which has occured 
Log Error 
Sample 
'#### 
Incident Dump Executor 
Test 
Notinhg 
'#### 
Sample 
test 
'#### 
OutOfmemory Sample 
This is what i want 
'#### 

, 내가 OUTOFMEMORY 찾으려하고 일단 내가 두 번 발생 ####

OutOfmemory beween 라인을 인쇄 할 필요가 발견, 그래서 나는 다음과 같은 출력을 원하는 :

'#### 
OutOfmemory is the error which has occured 
Log Error 
Sample 
'#### 

'#### 
OutOfmemory Sample 
This is what i want 
'#### 

내 출력에 나머지 줄을 원하지 않습니다.

+0

이 질문은 읽을 수있다. 사람들이 당신을 도우려는 경우 코드에 대한 코드 형식을 사용하십시오. 또한, 나는 당신이 질문을하는 것을 보지 못합니다. StackOverflow는 정확한 질문을하기 위해 문제를 진술해야 할뿐만 아니라 지금까지의 접근 방식과 정확히 어디에서 문제가 발생했는지를 보여줘야합니다. –

+0

죄송합니다. 지금 변경했습니다. – Naresh

+0

알고리즘이 실행되는 한, 실행중인 버퍼와 "OutOfMemory"플래그를 유지하는 것으로 충분합니다. 라인을 하나씩 읽은 다음 버퍼에 추가하십시오. "OutOfMemory"가 포함되면 플래그를 true로 설정하십시오. "###"과 일치하면 플래그가 true이면 전체 버퍼를 인쇄 한 다음 플래그를 false로 설정하고 버퍼를 지우고 계속합니다. –

답변

0

GNU는-AWK이 작업을 수행 할 수있는 작업은 다음과 같습니다

awk -v RS="'####" 'BEGIN{ORS=RS "\n\n"} /OutOfmemory/{print RT $0}' file 

'#### 
OutOfmemory is the error which has occured 
Log Error 
Sample 
'#### 

'#### 
OutOfmemory Sample 
This is what i want 
'#### 
0

-A (after) 및 -B (before) 옵션이있는 grep을 사용하면 일치 항목이 발견되기 전후에 표시 할 줄 수를 지정할 수 있습니다. , 파일이 foo이라는 가정 다음과 같이 할 수 있습니다

cat foo | grep -i -B 1 -A 2 "OutOfmemory"