특정 형식을 grep하는 방법

특정 형식을 grep하는 방법

다음 문자열이 포함된 .txt 파일이 있습니다.

ANEW.0000+0530-0015+0530_NEW
ANEW.0000+0530-0100+0530_NEW
ANEW.0045+0530-0100+0530_NEW
ANEW.0100+0530-0115+0530_NEW
ANEW.0100+0530-0200+0530_NEW
ANEW.0145+0530-0200+0530_NEW
ANEW.0200+0530-0215+0530_NEW
ANEW.0200+0530-0300+0530_NEW
ANEW.0245+0530-0300+0530_NEW
ANEW.0300+0530-0315+0530_NEW
ANEW.0300+0530-0400+0530_NEW
ANEW.0345+0530-0400+0530_NEW
ANEW.0400+0530-0415+0530_NEW
ANEW.0400+0530-0500+0530_NEW
ANEW.0445+0530-0500+0530_NEW
ANEW.0500+0530-0515+0530_NEW
ANEW.0500+0530-0600+0530_NEW
ANEW.0545+0530-0600+0530_NEW
ANEW.0600+0530-0615+0530_NEW
ANEW.0600+0530-0700+0530_NEW
ANEW.0645+0530-0700+0530_NEW
ANEW.0700+0530-0715+0530_NEW
ANEW.0700+0530-0800+0530_NEW
ANEW.0745+0530-0800+0530_NEW
ANEW.0800+0530-0815+0530_NEW
ANEW.0800+0530-0900+0530_NEW
ANEW.0845+0530-0900+0530_NEW
ANEW.0900+0530-0915+0530_NEW
ANEW.0900+0530-1000+0530_NEW
ANEW.0945+0530-1000+0530_NEW

0400+0530-0500+0530,0500+0530-0600+0530 등이 있는 모든 행을 grep해야 합니다. 누군가 원하는 출력을 얻기 위해 grep 명령을 사용하는 방법을 말해 줄 수 있습니까?

나는 다음을 시도했습니다. 하지만 작동하지 않습니다.

cat myfile.txt |grep "*00+0530-*00+0530*"

답변1

4자리의 하위 문자열이 타임스탬프라고 가정하면 15분 또는 15분에 타임스탬프가 포함된 행을 제외하려는 것처럼 보입니다.

이렇게 하려면 grep다음과 같이 사용하세요.

grep -v -e '[0-9][0-9]15' -e '[0-9][0-9]45' file.txt

또는 더 짧거나,

grep -v '[0-9][0-9][14]5' file.txt

여기에 있는 두 정규식은 분기에서 분기 시간까지 줄의 어느 위치에서나 타임스탬프와 일치합니다. 두 표현식 중 하나라도 일치하면 해당 줄은 다음과 같습니다.아니요options 로 인해 파일에서 추출되었으며 -v, 이는 일치의 의미를 뒤집습니다.

질문의 입력을 고려하면 이 명령의 결과는 다음과 같습니다.

ANEW.0000+0530-0100+0530_NEW
ANEW.0100+0530-0200+0530_NEW
ANEW.0200+0530-0300+0530_NEW
ANEW.0300+0530-0400+0530_NEW
ANEW.0400+0530-0500+0530_NEW
ANEW.0500+0530-0600+0530_NEW
ANEW.0600+0530-0700+0530_NEW
ANEW.0700+0530-0800+0530_NEW
ANEW.0800+0530-0900+0530_NEW
ANEW.0900+0530-1000+0530_NEW

표현식의 문제는 *기본 정규식 시작 부분의 a 가 literal 과 일치하고 *데이터에 그러한 문자가 없다는 것입니다. 또한 0*후행 문자는 00회 이상 일치하고 -*중간 문자는 대시로 0회 이상 일치합니다.

답변2

이 시도

grep '00+0530-..00+0530' myfile.txt

.모든 문자의 경우 검색 문자열에 점( )이 삽입됩니다. 당신은 필요하지 않습니다 cat.

관련 정보