sed/awk/grep 세미콜론 사이의 문자열 찾기

sed/awk/grep 세미콜론 사이의 문자열 찾기

다음과 같은 내용이 포함된 거대한 텍스트 파일이 있습니다.

igflex01; igflexdev01; igdbstg01;
igldapint01; igjetdev01; igsql01;
igesxstg01; igdbint01; igdmstg01;
igdsdev01; igdmmmo01; igmsgint02;

등...

문자열 "int"가 존재할 때 세미콜론 사이의 모든 텍스트를 추출하고 싶습니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

sed/grep을 요청했으므로 다음과 같습니다.

> cat file
igflex01; igflexdev01; igdbstg01;
igldapint01; igjetdev01; igsql01;
igesxstg01; igdbint01; igdmstg01;
igdsdev01; igdmmmo01; igmsgint02;

> sed -nr 's/\s*;\s*/\n/gp' file | grep int
igldapint01
igdbint01
igmsgint02

아니면 단 한 번의 sed 호출로 얻을 수 있습니다 ...

> sed -nr -e 's/\s*;\s*/\n/g;/int/P' file
igldapint01
igdbint01
igmsgint02

답변2

"tr" 명령을 사용하여 세미콜론을 줄 바꿈으로 바꾼 다음 grep(줄 기반)을 실행합니다.

$ cat input.txt | tr ';' '\n' | grep int
 igldapint01
 igdbint01
 igmsgint02

답변3

한 가지 방법은 속여서 ;개행 문자로 변환하는 것입니다. 그러면 예를 들어 grep을 사용할 수 있습니다.

tr ';' '\012' | grep int

예를 들어

$ cat x
igflex01; igflexdev01; igdbstg01;
igldapint01; igjetdev01; igsql01;
igesxstg01; igdbint01; igdmstg01;
igdsdev01; igdmmmo01; igmsgint02;

$ cat x | tr ';' '\012' | grep int
igldapint01
 igdbint01
 igmsgint02

어떤 경우에는 공백이 있기 때문에 공백이 있습니다.사이 ;. 또한 줄의 첫 번째 단어는엄격하게한 줄 에 ;있지만 데이터에서는 그 사이에 있음)도 반환됩니다.

답변4

$ cat abc.txt 
igflex01; igflexdev01; igdbstg01;
igldapint01; igjetdev01; igsql01;
igesxstg01; igdbint01; igdmstg01;
igdsdev01; igdmmmo01; igmsgint02;

$ grep -o '[^;]*int[^;]*' abc.txt 
igldapint01
 igdbint01
 igmsgint02

공백이 필요하지 않은 경우:

$ grep -o '[^ ;]*int[^ ;]*' abc.txt 
igldapint01
igdbint01
igmsgint02

관련 정보