실제 로그 파일:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
xyz:5:90:34:89:22:07
abbc1:6:346:78:89:100:01
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
Process ID: 0
Session ID: 0 Serial number: 0
abbc1:6:346:78:89:100:01
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
xyz:5:90:34:89:22:07
abbc1:6:346:78:89:100:01
v-gz1:999:39:56:23:101:123
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
v-gz1:999:39:56:23:101:123
원하는 출력:
xyz:5:90:34:89:22:07
abbc1:6:346:78:89:100:01
abbc1:6:346:78:89:100:01
xyz:5:90:34:89:22:07
abbc1:6:346:78:89:100:01
v-gz1:999:39:56:23:101:123
v-gz1:999:39:56:23:101:123
내가 찾고 있는 것은 coln(:)을 기반으로 로그 파일을 처리하는 것입니다.
sed '/^ :*$/d' logfile1 > logfile2
(앞에 공백이 있는 줄을 제거하세요.)sed '/^: *$/d' logfile2 > logfile3
(뒤에 공백이 있는 줄은 삭제하세요.)존재하지 않는 행 삭제
:
답변1
grep -v " " $IN | grep -P ":.*:"
답변2
모든 유효한 줄에는 콜론과 그 뒤에 10진수가 있는 것 같습니다. 또한 하이픈을 포함하여 소문자 영숫자 문자열로 시작합니다. 그래서 당신의 정규식은
^[a-z0-9-]+[0-9]
출력의 각 출력 줄 뒤에는 빈 줄이 있습니다. 그것이 정말로 원하는 것이라면 sed를 사용하십시오.
sed -Ene '/^a-z0-9-]+:[0-9]/ s/$/\n/p' filename
이중 개행 문자가 필요하지 않으면 grep의 동일한 패턴이 더 간단해질 것입니다.