grep 및 awk 명령의 속기

grep 명령

grep “ㅏ” 문자 a를 포함하는 각 줄 추출

예 :: netstat -개미 | grep “IS”

grep -v “#” 파일은 파일의 주석을 필터링합니다.

예 :: grep -v “#” httpd.conf >> /등/httpd.conf

그립 -n “일치하는 콘텐츠”파일은 출력 정보 라인을 출력합니다.

예 :: 그렙 -n -v “#” nginx.conf nginx.conf 주석 제거,줄 번호와 함께 다른 내용 출력。

grep -c는 일치하는 줄의 수만 출력합니다.

예 :: grep -c “2004” myfile은 myfile 파일에 2004가 몇 줄로 나타나는지 보여줍니다.,숫자만 출력。

grep “2004:22:5[0-9]” myfile은 myfile에 2004를 표시합니다.:22:502004년:22:59콘텐츠。

grep “^^[^210]” myfile은 2, 1 또는 0으로 시작하는 줄을 필터링합니다.。

grep -i “콘텐츠” 문서, 파일의 내용과 일치,대소문자를 구분하지 않음。

\ :메타 문자 마스킹의 특별한 의미,예를 들어 *.pas는 *.pas 유형과 일치하는 파일을 의미합니다.

[] :성냥[]내의 문자,단일 또는 여러 문자 가능。-를 사용하여 범위를 나타냅니다.。사용하는 경우[1-5]바꾸다[12345]

. :단일 문자와 일치

* :단일 또는 여러 문자와 일치,같은:10133*1 성냥 101331 ,101333921 , 10133AS1

^^ :입력 문자열의 시작과 일치

$ :입력 문자열의 끝과 일치

^$ : 빈 줄 일치

^.$ :문자가 하나뿐인 행과 일치

예 ::grep ^events 파일은 file 파일의 이벤트로 시작하는 줄을 출력합니다.。

예 ::grep abc$ file은 파일 file에서 abc로 끝나는 줄을 출력합니다.。

예 ::grep ^$ file이 파일 file에서 빈 줄을 인쇄합니다.。

예 ::grep -n ^$ file 파일에 빈 줄을 출력합니다.,그리고 빈 줄이 있는 줄 번호。

AWK 명령

awk는 루프와 함께 제공됩니다.,첫 줄을 먼저 읽고,분절,작동하다;두 번째 줄을 읽으십시오,분절,작동하다;

마지막 줄을 읽을 때까지,분절,작동하다。

awk‘{스모드}’ 파일

명령이 여러 개인 경우,각 명령 사이;분리。

awk‘{주문 1;주문 2;주문 3}’ 파일

특정 라인을 일치시켜야 하는 경우,패턴 매칭은 중괄호 왼쪽에 쓸 수 있습니다.。

awk '/모드/{주문 1;주문 2;주문 3}’ 파일

같은:고양이 /etc/passwd | 너 -F: '/뿌리/{인쇄 $1}’ 루트를 포함하는 줄과 일치,해당 행의 열 1을 출력하십시오.。

고양이 /etc/passwd | 너 -F: '/뿌리/{인쇄 $1,$2}’ 루트를 포함하는 줄과 일치,해당 행의 열 1과 열 2를 출력합니다.。

고양이 /etc/passwd | 너 -F: '/^루트/{인쇄 $1}' 일치는 루트로 시작합니다.。

고양이 /etc/passwd | 너 -F: '$2 ~ /루트/{인쇄 $1}’ 루트를 포함하는 두 번째 필드 일치。

고양이 /etc/passwd | awk '시작{FS=”:”}$2 ~ /루트/{인쇄 $1}’ 첫 줄을 읽기 전에,변수 FS 정의,구분자는 콜론。

고양이 /etc/passwd | awk '시작{FS=”:”}$2 ~ /루트/{인쇄 $1,$2}’ 여러 부분을 출력하고 싶다면,쉼표로 구분할 수 있습니다.。

고양이 /etc/passwd | awk '시작{FS=”:”}$2 ~ /루트/{인쇄 $1 $2}’ 쉼표를 쓰지 않으면,출력이 연결됩니다.。

Awk의 기본 출력 구분 기호는 공백입니다.,출력 구분 기호를 변경하는 방법은 무엇입니까? 변수 OFS 사용。

고양이 /etc/passwd | awk '시작{FS=”:”; OFS=”-“}$2 ~ /루트/{인쇄 $1,$2}’는 출력 구분 기호를 -로 만듭니다.。

BEGIN이 있는 곳에 END가 있다, END는 끝을 쓸어가는 것을 의미합니다.。모든 줄을 읽은 후,마지막으로 END 작업을 실행합니다.。

awk '시작{스모드}/모델/{주문 1;주문 2;주문 3}종료{스모드}’ 파일

ifconfig eth0 | grep “inet 주소” | awk '시작{인쇄 xxxx}{인쇄 $2}종료{yyyy 인쇄}’

다음과 같이 출력: inet 주소:따라서 공유 필요에 따라 설정해야 합니다.

xxxx 및 yyyy는 출력되지 않습니다.,인쇄를 사용할 때,print 다음에 변수 이름이 오는 경우,사용할 수 없습니다””;

print 다음에 변수 이름이 오지 않는 경우,사용해야합니다””넣다。

ifconfig eth0 | grep “inet 주소” | awk '시작{인쇄 “xxx”}{인쇄 $2}종료{인쇄 “yyyy”}’

다음과 같이 출력:

xxx

inet 주소:따라서 공유 필요에 따라 설정해야 합니다.

yyyy

방금 변수 FS와 OFS에 대해 이야기했습니다.,이제 NF와 NR에 대해 이야기하십시오.

NF:행당 필드 수

WHO | awk‘{인쇄 NR}’ 각 행에 있는 필드 수 표시。

너 -F: ‘{인쇄 NF}’ /etc/passwd용:구분 기호로,passwd의 각 줄에 있는 필드 수 표시。

너 -F: '/^루트/{인쇄 NF}’ /etc/passwd에서 루트로 시작하는 줄에 몇 개의 필드가 있습니까?。

NR:원본 텍스트에서 awk에 의해 처리된 이 줄의 내용은 어떤 줄입니까?,즉, 줄 번호를 표시합니다.。

passwd 파일에서 grep -n ^root /etc/passwd,원본 텍스트에서 루트로 시작하는 줄은 어느 줄입니까?。

너 -F: '/^루트/{인쇄 NR}’ /passwd 파일의 etc/passwd,원본 텍스트에서 루트로 시작하는 줄은 어느 줄입니까?。

awk와 함께 제공되는 변수 외에도,Awk는 변수를 사용자 정의할 수도 있습니다.。

루트가 몇 번 나타나는지 세십시오.

너 -F: '시작하다{AA=0}/뿌리/{아아++}종료{인쇄}’ 파트 2 DNS 정방향 및 역방향 확인이 구성되었습니다.

이 명령은,passwd 파일을 읽기 전에,먼저 변수 aa를 정의합니다.,초기값은 0,

루트가 포함된 경우,그런 다음 변수 aa가 1씩 증가합니다.,passwd의 모든 줄을 읽었을 때,END에서 다시 명령 실행,값을 입력하세요.。

노트:변수를 참조할 때 $를 추가하지 마십시오.,이것은 쉘이나 다른 언어와 동일하지 않습니다. 。

awk '시작 {작업 1} {작업 2} 종료 {작업 3}’ 파일은 작업 2 전에 작업 1을 수행합니다.,그런 다음 2를 조작하십시오.,작업 2 완료 후 작업 3 실행.

BEGIN은 일반적으로 파일의 정식 작업 전에 초기 값을 할당합니다. ,END는 일반적으로 파일 작업 후입니다.,마무리 작업 결과 출력。

Awk는 한 줄씩 데이터를 읽습니다.(기록)읽다,레코드는 여러 필드(열)로 나뉩니다.,그리고 첫 번째 필드를 변수 $1에 넣습니다.,

두 번째 변수는 변수 $2에 배치됩니다.,등등,$0전체 기록을 나타냅니다.;

NR : 현재 레코드 번호(처음 몇 줄)

NF: 현재 필드(영역)숫자(얼마나 많은 열)

-버전에 지정된 디렉토리를 사용하여 종속성을 생성합니다. “#” 각 도메인을 나타냅니다.(각 열)사이의 구분자(공백)는 #으로 대체됩니다.,이것은 더 직관적입니다。

예 ::너 -F “#” ‘{인쇄 $0}’ nginx.conf는 nginx.conf의 모든 레코드(각 행)를 출력합니다.

모든 필드(각 행의 모든 ​​열)와 각 열 사이의 구분 기호(공백)는 #으로 대체됩니다.。

awk‘{인쇄 $0}’ myfile은 myfile의 모든 레코드(줄)를 출력합니다.。

$0전체 기록이다 ,$1레코드의 첫 번째 필드입니다.,$2레코드의 두 번째 필드입니다.,$3레코드의 세 번째 필드입니다.,등등。

그러나 쉘의 $와 혼동하지 마십시오.。

예 ::너 -F “#” ‘{인쇄 NF,NR,$0}' nginx.conf는 nginx.conf의 모든 레코드(각 행)를 출력합니다.

모든 필드(각 행의 모든 ​​열)와 각 열 사이의 구분 기호(공백)는 #으로 대체됩니다.。각 레코드의 줄 번호를 동시에 계산,

각 레코드에 있는 필드(열) 수。

그런 다음 인쇄 주문은:

이 레코드에 있는 필드 수(NF) 이 레코드는 온라인에 있습니다. (NR) 기록 내용($0)(필드 1#필드 2)

이 레코드에 있는 필드 수(NF) 이 레코드는 온라인에 있습니다. (NR) 기록 내용($0)(필드 1#필드 2)

이 레코드에 있는 필드 수(NF) 이 레코드는 온라인에 있습니다. (NR) 기록 내용($0)(필드 1#필드 2)

awk의 특수 메타문자: + ,? +는 모든 문자와 일치함을 의미합니다.,? 모든 문자와 일치함을 의미합니다.。

일치 연산자: ~ , !~ 。 여기서 ~는 일치를 의미합니다., ! ~는 불일치를 나타냅니다.。 일치하거나 일치하지 않는 콘텐츠가 이어짐,내용은 //로 둘러싸여 있습니다.。

예 ::

고양이 점수.txt | awk '$0~/218.79.131.96/’ 먼저 score.txt의 내용을 출력합니다.,그런 다음 IP 218.79.131.96으로 전체 레코드를 찾습니다.。

고양이 점수.txt | awk '$0!~/218.79.131.96/’ 먼저 score.txt의 내용을 출력합니다.,그런 다음 IP 218.79.131.96으로 전체 레코드를 필터링합니다.。

awk‘{만약($1==”218.79.131.96″) printf $0}’ 파일 source.txt의 score.txt

레코드의 첫 번째 필드가 218.79.131.96과 일치하는 경우,그런 다음 이 레코드를 포함하는 전체 필드를 출력합니다.。

awk의 모든 작업은 따옴표 사이에 있습니다.。

awk의 일반적인 형식

awk‘{123}{345}{345}{456}’ 파일 중괄호 사이에 공백 없음

 

실시간으로 nginx 액세스 로그 출력,액세스한 IP 주소, 사용 - 구분 기호로

꼬리 -f /var/log/nginx/access.log | 너 -F- ‘{인쇄 $1}’

[root@app01 ~]# mpstat -P 모두 | grep -v 리눅스 | 정렬 -k4nr | 머리 -5

다음과 같은 텍스트가 있습니다. a.txt,awk ,행 3, 열 3의 값 가져오기
01:34:14 오후 2 16.13 0.00 0.81 0.01 0.00 0.24 0.00 0.00 82.82
01:34:14 오후 1 11.65 0.00 0.63 0.00 0.00 0.15 0.00 0.00 87.58
01:34:14 오후 3 11.59 0.00 0.64 0.00 0.00 0.11 0.00 0.00 87.66
01:34:14 오후 18 7.82 0.00 0.36 0.00 0.00 0.00 0.00 0.00 91.82
01:34:14 오후 16 7.21 0.00 0.41 0.00 0.00 0.02 0.00 0.00 92.36

[root@app01 ~]# 고양이 a.txt |awk‘NR == 3{인쇄 $3}’
3

 

 

답장을 남겨주세요