IP 정리를 위한 AWK 간격 표현

IP 정리를 위한 AWK 간격 표현

온라인으로 제공해주신 수많은 항목과 매뉴얼에 감사드립니다.

효과가 있지만 충분히 효과적입니까?
동의하시나요?
{내가 아는 한, 로그 +- 5,000개 항목을 읽는 것이 빠릅니다.}

"myAwk3.txt" 파일의 소스 데이터:

type,Srv-1,2016-04-16 23:59:02,Name1,1234567890abcdef123456789bbbbb00,(10.90.178.4:1004)
type,Srv-1,2016-04-16 23:59:24,<N@me> (-) [==]1 23,1234567890abcdef123456789bbbbb22,(192.10.196.74:65005)

현재 작동하는 코드:

awk --re-interval -F"," 'BEGIN{OFS=",";}{ 
patPort=":[0-9]{1,5}";              # Will find ":1" to ":65xxx"
IpPort=$6                           # Field needed, (192.10.196.74:65005)
IpOnly=gensub(patPort, "",1,$6);    # Remove pattern
IpOnly=gensub(/[(]/, "",1,IpOnly);  # Remove "(" , With sed: sed 's/[()]//g' 
IpOnly=gensub(/[)]/, "",1,IpOnly);  # Remove ")"
print IpPort, IpOnly;               # Show old and new data
} ' myAwk3.txt

결과:

(10.90.178.4:1004),10.90.178.4
(192.10.196.74:65005),192.10.196.74

답변1

정규식 일치 및 교체 오버헤드를 제거하는 것이 좋습니다.

awk '
    BEGIN { FS = OFS = "," }
    { 
        split($6, a, ":");
        print substr(a[1], 2);
    }
' myAwk3.txt

관련 정보