대괄호 안의 값을 검색하는 방법

대괄호 안의 값을 검색하는 방법

전체 명령줄에서 괄호 안에 나타나는 숫자만 검색해야 합니다.

예를 들어:

$ cat exa.lg
02:57:25 BROKER  : Unable to open errno =. (1295)
02:57:25 BROKER  1: Unable to open (45)
02:57:25 BROKER  1: Unable to open 999. (13)
02:57:25 BROKER  : Unable to open 1295, (1098)

1295명령줄( BROKER : Unable to open 1295) 이 아닌 괄호 안의 오류 번호 정보를 가져와야 합니다.

나는 이것을 시도했습니다 :

cat exa.lg | awk -F '[)(]' '{print $2}' | grep -E '1295|13' exa.lg
02:57:25 BROKER  : Unable to open errno =. (1295)
02:57:25 BROKER  1: Unable to open 999. (13)
02:57:25 BROKER  : Unable to open 1295, (1098)

1295하지만 두 개의 숫자(포함된 숫자 )를 얻었습니다 02:57:25 BROKER : Unable to open 1295.

난 그냥 가져가고 싶어요 02:57:25 BROKER : Unable to open errno =. (1295).

어떻게 해야 하나요?

답변1

정규식에 괄호를 포함합니다. 정규식에서 특별한 의미를 갖기 때문에 이스케이프 처리해야 합니다.

grep -E '\((1295|13)\)' exa.lg

답변2

단순한해결책:

awk '/\((1295|13)\)/{ print }' exa.lg

산출:

02:57:25 BROKER  : Unable to open errno =. (1295)
02:57:25 BROKER  1: Unable to open 999. (13)

  • /\((1295|13)\)/- 기록 (1295)이나 (13)기록 내의 내용을 일치시킵니다. ( 로도 표현 가능 /(1295)|(13)/)

답변3

괄호 안에 13또는 가 포함된 모든 줄을 인쇄한다고 가정합니다 . 1295그렇다면 다음을 수행할 수 있습니다.

$ grep -E '\(1295|13\)' exa.lg
02:57:25 BROKER  : Unable to open errno =. (1295)
02:57:25 BROKER  1: Unable to open 999. 

cat둘 다 파일 이름을 입력으로 사용할 awk수 있으므로 원래 명령이 필요하지 않습니다 . grep또한 작업이 awk의 출력이 아닌 파일( )에서 실행되기 때문에 작업이 awk의미가 없습니다 .grepgrep exa.lg

답변4

cat input | grep ".=" > output

또는

cat input | grep "errno" > output

당신은 할 것:

02:57:25 BROKER  : Unable to open errno =. (1295)  


그러나 이러한 모든 유형의 행 에 "errno" 또는 "=" 와 같은 고유 식별자가 있는지 확인해야 합니다(즉, 다른 행에는 이러한 단어/기호가 없음) .

관련 정보