Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

awk 사용을 시작하는 방법

awk, sed 및 grep은 Linux 또는 UNIX 명령줄에서 내가 가장 좋아하는 세 가지 도구입니다. 그들은 모두 꽤 강력합니다. 오늘은 awk를 사용하여 쉽게 크랙하는 방법을 살펴보겠습니다. 그런 다음 좀 더 재미있는 awk one 라이너를 살펴보겠습니다.

AWK는 파일이나 데이터 스트림에서 텍스트 기반 데이터를 처리하도록 설계된 프로그래밍 언어입니다. 1970년대 벨 연구소에서 만들어졌습니다. 꽤 오래됐지만 나이에 속지 마세요. 그것은 그것이 하는 일에서 매우 강력하고 효율적입니다. 이제 손을 더럽히자.

awk의 복잡한 작업과 사용법을 알아보기 전에 기본부터 시작하겠습니다. 이 연습에서는 더미 파일을 만들어 사용할 것입니다. 시스템의 로그와 같은 거의 모든 텍스트 파일을 사용할 수 있습니다. 내가 가장 좋아하는 시스템 모니터링 도구 중 하나인 Dstat의 샘플 출력을 사용할 것입니다. 출력은 다음과 같습니다.

awk 사용을 시작하는 방법
확대하려면 클릭하세요.

이것은 awk가 처리하기에 이상적인 출력입니다. awk는 쉼표 또는 탭으로 구분된 콘텐츠에 적합합니다. 그 이유는 곧 알게 될 것입니다. 따라서 유사한 데이터를 생성하거나 위의 예제를 복사하여 test.txt와 같은 더미 파일에 붙여넣습니다. Linux 컴퓨터에서 터미널 창을 실행합니다. 거의 모든 Linux 버전은 awk와 함께 제공됩니다. 어떤 이유에서인지 그것을 가지고 있지 않은 것을 발견했다면 그것을 설치하십시오. 터미널 창에서 test.txt 파일을 저장한 디렉토리에서 다음을 입력하십시오 –

# awk {'인쇄'} test.txt

출력에는 텍스트 파일의 전체 내용이 포함되어야 합니다. 재미있는 점은 무엇인가요?

이제 열을 선택하고 해당 열만 인쇄하는 방법을 살펴보겠습니다. 다음 명령을 실행하십시오.

# awk {'$1 인쇄'} test.txt

이제 awk에게 텍스트 파일의 첫 번째 열만 인쇄하도록 요청합니다. 파일이 탭으로 구분된 파일임을 자동으로 파악하고 내용의 첫 번째 열만 인쇄합니다. 출력에 다음과 같은 내용이 표시되어야 합니다.

—-총 CPU 사용량—-
usr
5
13
8
0
1
1
1
0
1
1

원하는 열에 대해 동일한 작업을 수행할 수 있습니다. awk가 표시된 명령 위에 세 번째 열 변경 명령을 인쇄하도록 하려면:

# awk {'$3 인쇄'} test.txt

awk가 여러 열을 인쇄하도록 할 수도 있습니다. 따라서 첫 번째, 세 번째 및 일곱 번째 열을 인쇄하려면 쉼표로 구분하여 명령에 추가하십시오.

# awk {'$1, $3, $7 인쇄'} test.txt

당신을 위해 트릭을 할 것입니다:

—-total-cpu-usage—- -net/total-
usr idl 읽기
5 93 154k
13 87 0
8 92 0
0 99 0
1 97 0
1 98 0
1 99 0
0 99 0
1 99 0
1 100 0

데이터가 공백이나 탭이 아닌 콜론으로 구분되는 /etc/password 파일과 같은 까다로운 파일이 있는 경우 awk는 이를 자동으로 선택하지 않습니다. 이러한 경우 awk에 올바른 구분 기호를 제공할 수 있습니다. 다음과 같은 명령을 사용하여 파일의 두 번째 열을 인쇄하십시오:

# awk -F':' {'$1 인쇄'} /etc/passwd

이 명령은 시스템에 있는 모든 사용자의 사용자 이름을 출력합니다.

사과
망고
바나나
수박
키위
오렌지

다른 유형의 구분 기호에 대해서도 동일한 작업을 수행할 수 있습니다. awk를 사용하여 로그 파일을 구문 분석할 수도 있습니다. 예를 들어, 웹 서버에서 액세스한 모든 IP 주소와 관련 웹 URL을 보려면 awk를 사용하여 웹 서버의 액세스 로그를 구문 분석하여 이 정보를 얻을 수 있습니다. 다음 명령을 사용하십시오.

# awk '$9 ==200 { print $1, $7}' access.log

199.63.142.250 /2008/10/my-5-favourite-hangouts/
220.180.94.221 /2009/02/queious-a-mysql-client-for-the-mac/
67.190.114.46 2009/05/
173.234.43.110 /2009/01/bicycle-rental/
173.234.38.110 /wp-comments-post.php

이와 같은 구문 분석을 사용하면 정보를 도용할 수 있으므로 누군가 귀하의 웹사이트를 많이 방문하는지 파악할 수 있습니다. 이 정보를 정렬할 수도 있습니다. 특정 IP 주소가 귀하의 웹사이트를 방문한 횟수를 알고 싶다고 가정해 보십시오.

# awk '$9 ==200 { $1} 인쇄' access.log | 정렬 | 유니크 -c | 정렬 -nr

46 122.248.161.1
35 122.248.161.2
26 65.202.21.10
24 67.195.111.46
19 144.3118