저는 새로운 사용자 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