2019년 9월 23일 월요일

[Linux] awk와 sed 사용법

[ 출처 :  https://www.thinkit.or.kr/ ]

* awk : 일정한 형식의 문서의 데이터를 추출함.
 # cat /var/log/maillog | grep LOGIN | awk '{print $1,$2,$3,$7,$9}'
 - 원본의 $?번째 문자열을 골라 추출
Sep 22 14:38:27 ns1 postfix/submission/smtpd[389]: 69D87174012A: client=unknown[xx.xx.xx.xx], sasl_method=LOGIN, sasl_username=xx@xx.xx
 - 결과
Sep 22 14:38:27 client=unknown[xx.xx.xx.xx] sasl_username=xx@xx.xx

 # cat /var/log/maillog | grep LOGIN | awk '{print $9}'| awk '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}'
  - 결과
 sasl_username=xx@xx.xx : 1

* sed : 입력 문자열을 변경 처리한다.
 - 이메일 로그상의 이메일 주소만 추출
 # cat /var/log/maillog | grep LOGIN | awk '{print $9}' | sed 's/sasl_username=//g'
 - 결과
  xx@xx.xx

두개를 합산하여 이메일 계정별 로그인 횟수 계산
# cat /var/log/maillog | grep LOGIN | awk '{print $9}'| sed 's/sasl_username=//g' | awk '{print $5}'| awk '{arr[$1]+=1} END {for (i in arr) {print i "\t" ":" arr[i]}}'
 - 결과
  xx@xx.xx : 5
  xx@xx.xx : 1

 

** 이메일 로그상의 특정 문자 추출하여 비교대상 비교하기(처리번호추출)

May  9 03:22:45 ns1 postfix/qmgr[8151]: 763721740172: from=<xx@xx.com>

# /var/log/maillog* | grep "postfix/qmgr" |grep "from=<xx@xxx.com" | awk '{print $6}' | sed 's/.$//'  > 1.txt

값 비교하여 거부(reject)된 대상만 보기

# grep  -f 1.txt /var/log/maillog | grep "reject" 


** 특정일에 SSHD 로그인 시도 IP별로 횟수 확인 하기

# cat /var/log/secure | grep "Feb 24"| grep "rhost=" | awk '{print $14}'|tr -d "rhost=" |sort |uniq -c

 

2019년 9월 18일 수요일

[ABAP] MRP 소요량 구하기 함수

DATA LT_LINES LIKE BAPI_MRP_IND_LINES OCCURS WITH HEADER LINE,
        LV_REQTY TYPE MENGE_D.

REFRESH LT_LINES.  

CALL FUNCTION 'BAPI_MATERIAL_STOCK_REQ_LIST'
  EXPORTING
    MATERIAL      = LV_MATNR
    PLANT         = LV_WERKS
    MRP_AREA      LV_BERID
  TABLES
    MRP_IND_LINES LT_LINES.

CLEAR LV_QTY.
LOOP AT LT_LINES WHERE FINISH_DATE IN S_BDTER
                   AND FINISH_DATE IS NOT INITIAL
                   AND PLNGSEGNO IS INITIAL.
  LV_QTY LV_QTY + LT_LINES-REC_REQD_QTY.
ENDLOOP.