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