Linux 명령 및 셸 기술
awk: 열이 프로그램이 될 때
awk는 열이 작업 단위가 될 때 도달할 수 있는 것입니다: nginx 액세스 로그, /etc/passwd, df 출력, 필드에 있는 모든 것. 로그 포렌식에 딱 맞는 한 줄짜리 옷을 입은 완전한 언어(변수, 배열, 산술, 패턴 동작 규칙)입니다. 정직한 경계: awk가 편안하게 수행하는 모든 작업은 한 줄로 되어 있으며, 한 페이지의 블록이 필요한 모든 작업은 아직 자체적으로 인정되지 않은 Python 스크립트입니다.
핵심 내용
- 필드 분할이 핵심 트릭입니다. awk -F: '$3 >= 1000 {print $1}' /etc/passwd는 실제 사용자를 나열하고 -F'[,|]'는 cut이 이미 포기한 경우 다중 문자 구분 기호를 처리합니다.
- 연관 배열로 계산: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure는 모든 로그를 한 줄의 빈도 테이블로 바꿉니다.
- NR 및 NF 응답 파일 질문: 'NR==1'은 헤더 줄이고 '{print NF}'는 행당 열 수를 계산하며 NR을 다른 파일의 저장된 값과 비교하면 중복 및 공백이 발견됩니다.
- Match plus extract는 일용할 양식입니다. awk '/ 500 / {print $7, $9}' access.log는 URL이 포함된 오류 페이지를 가져오고 OFS를 사용하면 행을 직접 다시 작성하지 않고도 단일 필드를 편집한 후 $0를 다시 인쇄할 수 있습니다.
- BEGIN 및 END 블록은 집계 작업이 진행되는 곳입니다. BEGIN은 구분 기호를 설정하고 중간 규칙은 한 줄에 실행되며 END는 총계를 인쇄합니다. 세 블록은 잘 읽혀지고, 다섯 블록은 변장을 한 대본입니다.
- 인용은 쉘 한 줄짜리 코드의 진짜 적입니다. 프로그램을 작은따옴표로 묶고, 그 안에 큰따옴표 리터럴을 넣고, 큰따옴표로 묶인 쉘 문자열 안의 $7은 전혀 awk에 도달하지 않는다는 점을 기억하세요.
- 숫자 작업은 LC_ALL=C가 됩니다. 숫자와 홀수 데이터 정렬의 로케일 쉼표는 비교를 바꾸고 옆으로 정렬하며 로케일을 고정하는 것은 오후 시간을 절약하는 한 줄입니다.
- 한계를 아십시오. CSV, 중첩 JSON 또는 상태 저장 여러 줄 형식 내의 따옴표로 묶인 쉼표는 Python으로 이동됩니다. awk는 메스이며 그대로 유지됩니다.
현장 노트
로케일 쉼표를 사용하여 로그에서 달러 열을 합산한 이상한 한 줄짜리 숫자는 회계가 보고서를 열 때까지 아무도 질문하지 않은 숫자를 생성했습니다. LC_ALL=C는 그 주에 별칭 라이브러리로 이동하여 머물렀습니다.
자주 묻는 질문
칼럼 작업을 위해 awk 또는 cut을 원하시나요?
하나의 고정 구분 기호와 일반 열 목록을 잘라냅니다. 조건, 정규식, 산술 또는 집계가 표시되는 순간 컷이 그 깊이를 벗어나게 됩니다.
열의 합계 또는 평균을 계산하려면 어떻게 해야 하나요?
END에서 집계: awk '{s += $5} END {print s, s/NR}'는 라인 전체에서 필드 5를 추가하고 평균을 구합니다. 로케일에서 숫자에 쉼표를 넣으면 먼저 천 단위 구분 기호를 제거합니다.
내 awk one-liner가 macOS에서 다르게 동작하는 이유는 무엇입니까?
macOS는 -i inplace 또는 gensub와 같은 GNU 확장 없이 POSIX awk를 제공합니다. Linux에서 실행되는 스크립트는 조용히 실패할 수 있으므로 한 줄짜리 POSIX 모양을 유지하거나 gawk를 가지고 다니십시오.
awk가 JSON을 구문 분석할 수 있나요?
의미가 없습니다. JSON에는 awk가 이해하는 열 구조가 없으며 정규식 해킹은 중첩된 개체에서 중단됩니다. 작업이 커지면 JSON용 awk 형태인 jq를 사용하거나 Python의 json 모듈을 사용하세요.
linux 명령 및 셸 기술에 대한 Kinetikatech의 지원
linux 명령 및 셸 기술 전문가가 될 필요는 없습니다: 관리자가 서버를 운영할지 아니면 싸울지 결정하는 명령 및 스크립팅 습관: 모든 기본 설치에 포함된 도구를 사용하여 텍스트와 프로세스를 검색, 변환, 전송 및 감독합니다. 그것이 바로 Linux 서버 보안 및 서버 관리 서비스가 존재하는 이유입니다. 설정, 강화, 모니터링, 그리고 밤낮을 가리지 않고 출동하는 사람.