특수 문자를 제거하기 위해 bash 쉘에서 출력 포맷하기 - linux


-1

나는 아래의 명령을 로그 파일에 대해 발행하고있다.

grep "Oracle Audit" /var/adm/messages | awk '{print $6}'

아래 출력 형식을 어떻게 지정합니까?

Audit[9460]:
Audit[10507]:
Audit[10507]:
Audit[10507]:

숫자 만 표시하기 예 :

9460
10507
10507
etc

답변:


0

당신이 순수한 awk 해결책, 시도

awk '{ sub("Audit\\[", "", $6); sub("]:", "", $6); print $6 }'

에서 원하지 않는 문자열을 대체합니다. $6 아무것도. 키루스의 대답은 이보다 더 빠를 수도 있습니다. 아니.


0

필요 없음 awk, grep 혼자 할 수 있습니다.

grep -oP 'Oracle Audit\[\K[0-9]+(?=\])' /var/adm/messages

그만큼 \KOracle Audit\[ 보고 된 일치 항목의 시작 부분을이 지점으로 재설정합니다. 그래서 그것은 성냥의 일부가 아닙니다. 인쇄하고자하는 숫자가 보이면 미리보기가 있습니다. (?=). 마찬가지로 \K 순서.

그것은 인쇄 할 것이다 :

9460
10507
10507
10507
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.