날짜와 시간만 삭제하세요(예:2018-05-09-10.13) 아래 문자열에서
/pi_nfs/pixin/axpin-zhgahh/was_logs/was_admin_logs/start_WPS.log.05-
09-2018-10.13:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember stop
completed.
/pm_nfs/pmfin/axpin-zhgahh/was_logs/was_admin_logs/start_WPS.log.05-
09-2018-23.00:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember stop
completed.
아래 조합을 시도했지만 반환되었습니다.
주문하다:
zgrep -i "AppClusterMember stop completed" /pi_nfs/pixin/axpin
zhgahh/was_logs/was_admin_logs/start_WPS.log.05-09-2018*|cut -d '.' -f3
산출:
05-09-2018-10.13:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember
stop completed
05-09-2018-23.00:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember
stop completed
예상 출력:
05-09-2018-10.13
05-09-2018-23.00
답변1
답변
grep -Eo "[0-9]{2}-[0-9]{2}-[0-9]{1,4}-[0-9]{2}\.[0-9]{2}" file
설명하다
심벌 마크:
-E
- 확장 정규식을 사용하세요. (정규식에서 특정 문자를 이스케이프하지 않고 사용할 수 있습니다.)
-o
- 일치하는 출력만 인쇄합니다.
정규식:
[0-9]
0
- -에 숫자가 있으면 문자와 일치 합니다 9
.
[0-9]{x}
x
0
- 연속된 문자와 일치 - 연속된 문자가 숫자인 경우 9
.
[0-9]{x,y}
x
- 숫자인 경우 최소한 연속된 문자와 일치하고 0
, 9
그 이상일 경우 가장 많은 y
문자와 일치합니다.
-
특별한 의미는 없으며 grep
정확한 문자를 일치시키려고 노력합니다 -
.
.
이는 정확한 문자를 나타내기 any character
위해 이스케이프를 사용해야 함을 의미합니다 .\
.
질문댓글로 추가요청에 답변해주세요
zgrep -Po "[0-9]{2}-[0-9]{2}-[0-9]{1,4}-[0-9]{2}\.[0-9]{2}(?=.*stop completed\.)" file.gz
설명하다
~에서zgrep 매뉴얼:
Zgrep은 압축 또는 gzip 압축 파일에서 grep을 호출합니다.
지정된 모든 옵션은 grep에 직접 전달됩니다.
그래서 새로 추가된 플래그와 정규식 부분에 대해서만 설명하겠습니다.
심벌 마크:
-P
- Perl 정규 표현식을 사용하세요. (미리보기 허용)
정규식:
(?=.*stop completed\.)
(?=
- 정규식 중 from to 부분을 )
이라고 합니다 Positive look-ahead
.
이 경우 이전 정규식과 일치합니다.오직줄에 stop completed.
after가 포함된 경우.
답변2
echo "/pi_nfs/pixin/axpin-zhgahh/was_logs/was_admin_logs/start_WPS.log.05-09-2018-10.13:ADMU4000I: Server Node_axpin-zhgahh_AppClusterMember stop completed." | cut -d"." -f3,4 | cut -d":" -f1
출력은 다음과 같습니다
05-09-2018-10.13
그래서 다음과 같은 것이 필요할 것 같습니다.
cut -d"." -f3,4 YOUR_FILENAME | cut -d":" -f1
YOUR_FILENAME
사용하려는 실제 파일 이름은 어디에 있습니까?
답변3
awk -F: '{split($1,a,".");print a[3]"."a[4]}' input.txt
zgrep -i "AppClusterMember stop completed" /pi_nfs/pixin/axpin zhgahh/was_logs/was_admin_logs/start_WPS.log.05-09-2018* | awk -F: '{split($1,a,".");print a[3]"."a[4]}'
- -F: 레코드 분할 기준: (콜론)
- Split($1,a,".") - 레코드 1을 다음으로 분할합니다. (점)이라는 배열에 값을 유지합니다.
- print a[3]"."a[4] - 배열 값을 인쇄합니다.