특정 부분의 선을 얻는 방법

특정 부분의 선을 얻는 방법

저는 새로운 사용자 awk이고 열을 자르고, 열을 추가하고, 문자를 바꾸는 방법을 알고 있습니다. 이제 대용량 파일에서 특정 패턴을 잘라야 합니다. 파일은 다음과 같습니다.

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.bufferSize = 16384

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:Successfully Logged In

여기에서(위는 헤더일 뿐이고 파일은 훨씬 더 큽니다) 다음 패턴으로 모든 줄을 잘라야 합니다.

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

나는 사용했다

   sed 's/^.*java:LOG:=//' inpufile > outputfile

그러나 그것은 작동하지 않았습니다.

답변1

이 시도:

sed -n '/.*java:LOG:/p' inpufile > outputfile

이 명령은 sed -n '/pattern/p'다음 조건을 충족하는 문자열만 인쇄합니다.안쪽 패턴을 맞춰보세요//

귀하의 명령 - sed 's/^.*java:LOG:=//'- 대체 구조를 사용하십시오 s/pattern/replace_string/( a를 찾아 pattern로 바꾸십시오 replace_string)

귀하의 명령 예를 sed보면 java:LOG:.

파일 이름에 주의하세요- "t" 문자를 놓쳤습니다 -입력 파일, 하지만입력하다문서

이 문자열과 정확히 일치해야 하는 경우:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

..패턴이 너무 길어질 것 같아요

답변2

간단하게(패턴별로 라인 추출):

awk '/^[0-9]{4}-[0-9]{2}-[0-9]{2}.*\.java:LOG/' inputfile > outputfile

관련 정보